从两个不同文件夹中的文件比较中输出csv文件

时间:2019-03-11 17:41:38

标签: python python-3.x csv

我正在使用一个程序,该程序需要在更新数据库之前和之后制作一个具有文件名的.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')}'"))

这不起作用,因为有时它会放到不同的文件中

0 个答案:

没有答案