简体   繁体   English

Os.rename 文件覆盖

[英]Os.rename Files Overwrite

I am making a Python project that renames multiple files.我正在制作一个重命名多个文件的 Python 项目。 However, sometimes the files overwrite.但是,有时文件会被覆盖。

suffixes = ['.pdf', '.epub', '.mobi']
file_list = []


def change_fname(dir_name, part=' (z-lib.org)', action='remove'):
    fnames = os.listdir(dir_name)
    for suffix in suffixes:
        fnames_suffix = [f for f in fnames if f.endswith(suffix)]
        for fname in fnames_suffix:
            print(f'{action} "{part}" into/from "{fname}"')
            if action == 'remove' and fname.endswith(part+suffix):
                new_name = fname[:-len(suffix) - len(part)] + suffix
                print(f'fname is {fname}')
            elif action == 'insert':
                new_name = fname[:-len(suffix)] + part + suffix
            else:
                raise Exception(f'Unknown Action: {action}')
            print(new_name)
            old_file = os.path.join(dir_name, fname)
            new_file = os.path.join(dir_name, new_name)
            os.rename(old_file, new_file)


file_to_show = '/Users/ChrisHart/Downloads/test i love you daddy/'
subprocess.call(["open", "-R", file_to_show])

if __name__ == '__main__':
    dir_name = '/Users/ChrisHart/Downloads/test i love you daddy/'
    try:
        change_fname(dir_name, part=' (z-lib.org)', action='remove')
    except Exception as ex:
        print(ex)

This is my program ^这是我的程序^

file (part).pdf
file.pdf

The file will delete " (part)", so we get this

file.pdf
file.pdf

And they overwrite.

file.pdf

How can I fix this overwriting?我该如何解决这个覆盖问题?

I also wrote a script that changes multiple files.我还编写了一个更改多个文件的脚本。 Maybe my code helps you understand your problem:也许我的代码可以帮助您了解您的问题:


import os

print(os.getcwd())           #Gives you your current directory

os.chdir('/PATH/TO/FILES')   #Change directory to the files


for i in os.listdir('/PATH/TO/FILES'):
    os.rename(i, i.replace('(z-lib.org)', ' '))  #replaces z-lib with one whitespace
    
print(i)  

I know what you're trying to replace :D ... I did the same thing我知道你想替换什么 :D ... 我做了同样的事情

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM