>  기사  >  백엔드 개발  >  그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

WBOY
WBOY앞으로
2023-04-14 22:58:081729검색

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

문득, USB를 꽂으면 USB에 있는 프로그램이 자동으로 실행될 수 있을까 하는 생각이 들었습니다. 확인해보니 Windows에서만 가능하다는 것을 알았습니다. 자세한 내용은 usb autorun이라는 키워드로 검색해보시면 됩니다. 그러나 예를 들어 USB가 연결되면 USB의 중요한 파일이 자동으로 로컬에 복사되거나 백그라운드에서 아무도 모르게 서버에 업로드되도록 하려면 특별한 소프트웨어 지원이 필요합니다.

그래서 저는 파이썬으로 프로그램을 작성하고 백그라운드에서 실행시킬 수 있을까 생각했습니다. USB 플래시 드라이브를 삽입할 때마다 그 안의 중요한 파일이 자동으로 복사됩니다.

USB 플래시 드라이브가 삽입되었는지 판단하는 방법은 무엇입니까?

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

먼저 컴퓨터 터미널을 열고 /Volumes 디렉터리에 들어갑니다. 이때 USB 플래시 드라이브를 삽입하면 마운트된 것을 확인할 수 있습니다. 이 디렉터리 아래, 즉 고정된 시간에만 이 디렉터리를 검색하면 됩니다. 이 디렉터리에 새 폴더가 나타나면 USB 플래시 드라이브가 삽입되었을 가능성이 높습니다.

내 디자인은 이렇습니다. time.sleep(3) 함수를 사용하여 프로그램을 계속 실행하고, 3초마다 /Volumes/ 디렉터리를 확인하여 추가 폴더가 있으면 다른 폴더에 복사하세요.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

제목에서 알 수 있듯이, 우리는 이 "바이러스"를 완성하기 위해 실제로 10줄(실제로는 11줄, 구성)만 사용했습니다. USB의 디렉토리는 삽입 후 30분 후에 모두 홈 디렉토리에 배치되는 것을 확인할 수 있습니다.

파일을 선택적으로 복사하는 방법은 무엇입니까?

이 아이디어의 타당성을 테스트하기 위해 매우 간단한 스크립트를 작성했지만 여전히 문제가 있습니다. USB 플래시 드라이브에 있는 모든 파일을 빠르게 복사할 수 있었던 이유는 USB 플래시 드라이브에 파일이 2~3개밖에 없었고, 크기도 15M를 넘지 않았기 때문입니다. 대상 USB 디스크에 필요하지 않은 영화, 음악 및 파일이 많이 있는 경우 프로그램은 이를 건너뛰고 .ppt 파일과 같은 .docx와 같은 일부 중요한 파일만 선택하거나 최근 항목만 복사할 수 있어야 합니다. 수정된 파일을 삭제하거나 크기가 5M보다 큰 모든 파일을 제외합니다. 물론 파이썬으로 할 수 있나요?

예를 들어보겠습니다.

특정 디렉토리에 testwalk 폴더를 생성했습니다. file123.txt 3개, 폴더123이 3개 있습니다.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

root는 현재 위치를 저장하며 ./testwalk/ 아래의 모든 폴더를 루트 디렉터리로 사용하고 아래쪽으로 검색합니다.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

디렉토리를 개별적으로 보기

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

파일을 개별적으로 보기

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

자, 이제 USB 폴더를 재귀해서 모든 파일을 찾고, 크기가 다음보다 작은지 확인해야 합니다. 3M 등 그냥 집에 복사하고, 값보다 크면 폐기하세요.

shutil 모듈그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.


이제 폴더를 예로 들어 보겠습니다. file1.txt를 폴더2로 복사하려면 다음을 수행하세요.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

Shutil에는 내가 다루지 않을 많은 도구가 있습니다. 여기에서 자세히 알아보세요.

os.path.getsize()는 크기를 결정합니다그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

os.path.getsize(파일 이름)는 파일 크기를 확인하는 데 사용되는 값을 바이트 단위로 반환합니다. 읽기 쉬운 형태로 변환되었습니다.

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

여기서는 3M 미만의 파일 크기만 선택하면 됩니다. 3M = 3 * 1024kB = 3 * 1024*1024byte

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

shutil.copy2와 결합하면 선택한 크기의 파일을 다음으로 복사할 수 있습니다. 대상 폴더

파일 형식을 지정하는 방법

여기서는 정규 표현식이 필요합니다.

정규식 콘텐츠가 많고 "Python Core 프로그래밍"에서 전체 장이 이에 대해 다루기 때문에 깊이 들어가지는 않겠습니다.

다음과 같이 지정된 파일 접미사와 지정된 파일 크기를 대상 파일에 복사할 수 있습니다.

re

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

파일을 더 잘 지정하려면 더 복잡한 정규식을 사용하는 것을 잊지 마세요.

수정 시간을 기준으로 파일 필터링

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

이때 디렉토리에 newfile이라는 파일을 생성했습니다

그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.

간단히 말하면, 각 파일의 수정 시간을 필터링하면 가장 최근 파일만 복사할 수 있습니다 또는 특정 기간에 수정되거나 추가된 파일인 경우, 이 기능은 특정 상황에서 유용합니다.

요약

사실 이는 정교한 악성코드가 아닌 작은 프로그램일 뿐입니다. 나는 이 예를 사용하여 파일을 처리하고 모든 사람의 학습 열정을 불러일으키는 Python의 강력한 능력을 보여주고 싶습니다. 위의 구현은 모두 macos를 기반으로 합니다. Windows도 약간만 수정하면 성공할 수 있습니다. 위의 기술은 학습용이므로 다른 활동에 사용해서는 안 됩니다.

위 내용은 그것에 대해 생각하고 USB 플래시 드라이브를 연결하고 Python 코드 실행을 시작하는 것이 무섭습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제