gpt4 book ai didi

python - 递归 glob 不返回文件

转载 作者:行者123 更新时间:2023-12-01 09:11:13 24 4
gpt4 key购买 nike

import glob
import os, random, struct
from Crypto.Cipher import AES

key = str(random.randint(10000000,999999999) * 42)
startPath = 'C:\\Users\\dev\\Desktop\\test'

def encrypt_file(key, in_filename, out_filename=None, chunksize=64*1024):
""" Encrypts a file using AES (CBC mode) with the
given key.
key:
The encryption key - a string that must be
either 16, 24 or 32 bytes long. Longer keys
are more secure.
in_filename:
Name of the input file
out_filename:
If None, '<in_filename>.enc' will be used.
chunksize:
Sets the size of the chunk which the function
uses to read and encrypt the file. Larger chunk
sizes can be faster for some files and machines.
chunksize must be divisible by 16.
"""
if not out_filename:
out_filename = in_filename + '.enc'

iv = os.urandom(16)
encryptor = AES.new(key ,AES.MODE_CBC, iv)
filesize = os.path.getsize(in_filename)

with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
outfile.write(struct.pack('<Q', filesize))
outfile.write(iv)

while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += b' ' * (16 - len(chunk) % 16)

outfile.write(encryptor.encrypt(chunk))

#Encrypts all files recursively starting from startPath
for filename in glob.iglob(startPath, recursive=True):
if(os.path.isfile(filename)):
print('Encrypting> ' + filename)
encrypt_file(key, filename)
os.remove(filename)

在 Python 3.7 中运行此程序时,我没有收到任何错误,但没有任何反应,我使用它来在用户注销时加密敏感用户目录,程序的所有其他部分都可以工作。有人可以解释一下这是怎么回事吗?

最佳答案

来自the doc for glob :

If recursive is true, the pattern “**” will match any files and zero or more directories and subdirectories. If the pattern is followed by an os.sep, only directories and subdirectories match.

因此,如果您想在此处使用 glob,则需要包含以下模式:

for filename in glob.iglob(os.path.join(startPath, '**'), recursive=True):
# ....

关于python - 递归 glob 不返回文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com