我正在使用一个程序,该程序需要在更新数据库之前和之后制作一个具有文件名的.csv文件。没有文件已更改,只是重命名并添加了新文件。 例如,如果我重命名一些文件,说我将“ file.txt”重命名为“ file_renamed.txt”,但不对其内容进行任何更改,我想比较两个文件夹(一个在重命名之前,一个在之后),并获得一个之前和一个CSV文件中的专栏之后
before, after
file.txt, file_renamed.txt
...
我当前的代码是这样的,我没有外部库,只有python标准库:
if os.path.isdir('src'):
to = os.path.abspath('file.csv'))
paths = []
last_dir = os.path.abspath(os.curdir)
os.chdir('src')
if args.debug:
print('Reading resource pack...')
for root, dirs, files in os.walk('assets'):
for file in files:
paths.append(os.path.join(root, file))
os.chdir(last_dir)
print(os.path.abspath(os.curdir))
if args.debug:
print(f"Writing to csv: '{to}'")
lines = {}
os.chdir(os.path.join('assets2'))
with open(to, 'w') as f:
f.write('')
f.close()
for root, dirs, files in os.walk('assets'):
for file in files:
name = os.path.join(root, file)
with open(to, 'a', newline='') as f:
writer = csv.writer(f)
for path in paths:
try:
if filecmp.cmp(os.path.abspath(os.path.join(root, file)), path):
writer.writerow([name, path])
print(f"'{name}': '{path}'")
paths.remove(path)
break
except Exception as e:
print(e)
paths.remove(path)
continue
f.close()
os.chdir(last_dir)
if args.debug:
print(json.dumps({}, indent=2))
else:
raise(Exception(f"No such file or directory '{os.path.abspath('src')}'"))
这不起作用,因为有时它会放到不同的文件中