Python 使用略有不同的前缀更改许多文件名
我试图一次更改很多文件名,但遇到了一个我无法解决的问题。我有一个文件名列表,所有文件名都以“####-”开头 i、 e.“1942-testfile001.txt” 所有文件都以“yyy-”开头,四位数的年份、空格、破折号和空格。。。 我想删除所有这些“yyyy-”并保留其余的 当我使用上面的特定文本badprefix=“1942-”时,它只适用于当然以1942开头的文件 每当我尝试输入通配符(#,*,?)、badprefix=“19##-”或badprefix=“19??”时,它都不起作用 我的问题是:Python 使用略有不同的前缀更改许多文件名,python,Python,我试图一次更改很多文件名,但遇到了一个我无法解决的问题。我有一个文件名列表,所有文件名都以“####-”开头 i、 e.“1942-testfile001.txt” 所有文件都以“yyy-”开头,四位数的年份、空格、破折号和空格。。。 我想删除所有这些“yyyy-”并保留其余的 当我使用上面的特定文本badprefix=“1942-”时,它只适用于当然以1942开头的文件 每当我尝试输入通配符(#,*,?)、badprefix=“19##-”或badprefix=“19??”时,它都不起作用
这段代码能解决你的问题吗
import os, glob
path = "/tmp/test/"
files = "*.txt"
dummy_year = "1234 - "
for oldpath in glob.glob(path + files):
newpath = path + oldpath[len(path)+len(dummy_year):]
print("from: ", oldpath, "to:", newpath)
os.rename(oldpath, newpath)
它改名为
1234 - cdef abc sdf.txt
1946 - abcde sdf.txt
到
你说“不行”到底是什么意思?你做了什么调试?给出一个.by's not work,我的意思是它不会更改文件名,即:badprefix=“??-”badprefix=“###-”badprefix=“*-”为什么?您似乎没有任何与所描述的通配符相关的代码。查看了
pathlib
或glob
?这很不幸,但您的截止日期并没有改变规则:是的,如果它如广告所示工作,那么这将完全符合我的要求是的,它工作了。。。我确实在最后得到了一个错误,但它确实完成了所有我需要的,谢谢你。。。编辑时,错误是一个不应该存在的随机文件,并且与您使用的解决方案无关provided@FedaykinWolf:这只是从目录中以“.txt”结尾的所有文件名中删除了7个字符(无论它们是什么!)。您可以在一行(可以说太长)中执行此操作:\u=[os.rename(os.path.join(p,f),os.path.join(p,f[7:]),如果f.endswith('.txt')]
我想出来了-任何7个字符,但它满足了我的需要。。。感谢您添加更多信息,这太棒了。。。现在至少我可以研究下一个我自己解决不了的问题了。。。不会太久的;)
1234 - cdef abc sdf.txt
1946 - abcde sdf.txt
abcde sdf.txt
cdef abc sdf.txt