我尝试重命名文件。不希望文件以" __"开头。尝试使用帖子中的代码: Removing characters from filename in batch
制作清单时:
myDir = os.listdir(r"S:\Shared\Santa Rosa")
for x in myDir:
...
我得到了这个输出:
Tuesday
Wednesday
__1831.pdf
__1832.pdf
__1833.pdf
__1834.pdf
__1841.pdf
__1842.pdf
__1843.pdf
__1844.pdf
__1851.pdf
__1852.pdf
__1853.pdf
__1854.pdf
__1861.pdf
__1862.pdf
但是什么时候这样做:
for x in myDir:
os.rename(x, x.replace('__', ''))
我收到错误:
Traceback (most recent call last):
File "<interactive input>", line 2, in <module>
WindowsError: [Error 2] The system cannot find the file specified
答案 0 :(得分:1)
您应该给os.rename提供完整的路径名,例如:
之类的东西dirName = r"S:\Shared\Santa Rosa"
myDir = os.listdir(dirName)
for x in myDir:
oldName = os.path.join(dirName, x)
newName = os.path.join(dirName, x.replace('__', ''))
os.rename(oldName, newName)
答案 1 :(得分:1)
这是glob
的工作。用它来过滤文件名。由于它返回了可用的路径,因此您不需要os.path.join
。
>>> from glob import glob
>>> import os
>>> for fn in glob("tmp/__*.pdf"):
... print(fn)
... os.rename(fn, fn.replace("__", ""))
...
tmp/__aaa.pdf
tmp/__bbb.pdf
答案 2 :(得分:0)
os.rename()
需要文件的完整路径:
os.rename(os.path.join(r"S:\Shared\Santa Rosa", x), os.path.join(r"S:\Shared\Santa Rosa", x.replace("__", ""))
答案 3 :(得分:0)
使用os.path.join
获取完整路径。
dirPath = r"S:\Shared\Santa Rosa"
myDir = os.listdir(dirPath)
for x in myDir:
x = os.path.join(myDir, x)
os.rename(x, x.replace('__', ''))