重命名和压缩文件Python-FileNotFoundError
刚刚回到Python中,我正在尝试构建一个脚本,该脚本将匹配文件名、重命名、压缩它们,然后最终根据它们构建一个控制文件(我还没有编写)。它对目录中的文件起作用,但最后我得到一个错误:FileNotFoundError:[WinError 2]系统找不到指定的文件:“A20190331.txt”->“B20190530.txt”。重命名后是否在开始时重新运行我的txt_文件以进行循环?在这一点上,代码可能不是最优的重命名和压缩文件Python-FileNotFoundError,python,zip,file-rename,Python,Zip,File Rename,刚刚回到Python中,我正在尝试构建一个脚本,该脚本将匹配文件名、重命名、压缩它们,然后最终根据它们构建一个控制文件(我还没有编写)。它对目录中的文件起作用,但最后我得到一个错误:FileNotFoundError:[WinError 2]系统找不到指定的文件:“A20190331.txt”->“B20190530.txt”。重命名后是否在开始时重新运行我的txt_文件以进行循环?在这一点上,代码可能不是最优的 import os import zipfile try: import
import os
import zipfile
try:
import zlib
compression = zipfile.ZIP_DEFLATED
except:
compression = zipfile.ZIP_STORED
path = 'mypath'
txt_files = []
for root, dirs, files in os.walk(path):
for file in files:
txt_files.append(file)
def create_zip(data_dt):
for files in txt_files:
if '.py' in files:
continue
elif 'A' in files:
file_name = 'A' + data_dt + '.txt'
name_full_path = path +'\\'+ file_name
os.rename(files, file_name)
zf = zipfile.ZipFile('A' + data_dt+ '.zip', mode='w')
zf.write(name_full_path, file_name, compress_type=compression)
zf.close()
elif 'B' or 'C' in files:
file_name = 'B' + data_dt + '.txt'
name_full_path = path +'\\'+ file_name
os.rename(files, file_name)
zf = zipfile.ZipFile('B' + data_dt +'.zip', mode='w')
zf.write(name_full_path, file_name, compress_type=compression)
zf.close()
else:
break
create_zip('20190530')
克里斯托弗
我立刻发现了你的问题:
txt_files = []
for root, dirs, files in os.walk(path):
for file in files:
txt_files.append(file)
我相信你想走这条路:
for root, dirs, files in os.walk(path):
for file in files:
txt_files.append(os.path.join(os.path.get_cwd(), file))
让os.path为您处理路径——它可以跨平台移植,并且不易出错
hth我做了一些修改,你能试试这个吗,但是用你的方式,代码会覆盖文件。 所以试试这个脚本,告诉我你是想覆盖还是只是重命名和压缩
def create_zipe(data_dt):
for files in txt_files:
if '.py' in files:
continue
elif 'ASS' in files:
file_name = 'A' + data_dt + '.txt'
name_full_path = path +'/'+ file_name
os.rename(files, file_name)
zf = zipfile.ZipFile('A' + data_dt+ '.zip', mode='w')
zf.write(name_full_path, file_name, compress_type=compression)
zf.close()
elif 'C' in files or 'B' in files:
file_name = 'B' + data_dt + '.txt'
print(file_name)
name_full_path = path +'/'+ file_name
print(name_full_path)
os.rename(files, file_name)
zf = zipfile.ZipFile('B' + data_dt+ '.zip', mode='w')
zf.write(name_full_path, file_name, compress_type=compression)
zf.close()
谢谢你的mods,我想先覆盖然后压缩。