我正在尝试使用Python重命名目录中的一些文件.
假设我有一个调用的文件,CHEESE_CHEESE_TYPE.***并希望删除CHEESE_所以我的结果文件名将是CHEESE_TYPE
我正在尝试使用os.path.split它,但它无法正常工作.我也考虑过使用字符串操作,但也没有成功.
如果我要重命名A到B,但前提是B不存在的,天真的事情会被检查是否B存在(有access("B", F_OK)或类似的东西),如果不继续进行rename.不幸的是,这会打开一个窗口,在此窗口期间,某些其他进程可能会决定创建B,然后它会被覆盖 - 更糟糕的是,没有任何迹象表明发生了类似的事情.
其他的文件系统访问功能不从这个痛苦- open已O_EXCL(所以复制的文件是安全的),而最近的Linux得到了整个家庭*at保护对大多数其他竞争条件的系统调用-但不是这个特别的一个(renameat存在,但防止了完全不同的问题).
它有解决方案吗?
我想用新名称重命名/替换部分字符串。
我有一个表示文件的字符串,包括其路径和文件扩展名,如下所示。
source_file = 'images/filename.jpg'
Run Code Online (Sandbox Code Playgroud)
下面显示了我到目前为止所尝试的内容。但是,它有效,有没有更好的方法来产生相同的结果?我通过更短的语法和更高效来定义“更好”。
import uuid
source_file = 'images/filename.jpg'
split = source_file.rsplit('/', 1)
path, filename = split[0], split[1]
ext = filename.rsplit('.', 1)[1]
# rebuild
renamed = path + str(uuid.uuid4()) + ext
Run Code Online (Sandbox Code Playgroud)