Python 操作系统重命名不工作
我尝试重命名文件。不希望文件以“\ \”开头。已尝试使用post中的代码: 制作列表时:Python 操作系统重命名不工作,python,operating-system,rename,Python,Operating System,Rename,我尝试重命名文件。不希望文件以“\ \”开头。已尝试使用post中的代码: 制作列表时: myDir = os.listdir(r"S:\Shared\Santa Rosa") for x in myDir: ... 我得到这个输出: 周二 星期三 __1831.pdf __1832.pdf __1833.pdf __1834.pdf __1841.pdf __1842.pdf __1843.pdf __1844.pdf __1851.pdf __1852.pdf __1853.pdf
myDir = os.listdir(r"S:\Shared\Santa Rosa")
for x in myDir:
...
我得到这个输出:
周二
星期三
__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('__', ''))
我得到一个错误:
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
WindowsError:[错误2]系统找不到指定的文件
os.rename()
需要文件的完整路径:
os.rename(os.path.join(r"S:\Shared\Santa Rosa", x), os.path.join(r"S:\Shared\Santa Rosa", x.replace("__", ""))
使用
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('__', ''))
您应该为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)
这是
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
您需要在文件名的整个路径前加前缀。。。这意味着添加
S:\Shared\Santa Rosa
作为前缀。为了使您的工作更简单,请尝试pathlib:我建议您使用glob.glob()
而不是os.listdir
,因为如果您在调用中将其作为参数传递,前者将返回完整的路径名。否则,您将需要将父文件夹名os.path.join()
添加到每个文件名中,只有文件名在使用前返回。