Python 操作系统重命名不工作

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

我尝试重命名文件。不希望文件以“\ \”开头。已尝试使用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
__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()
添加到每个文件名中,只有文件名在使用前返回。