重命名 Windows 目录中的文件
Rename files in a Windows directory
我目前正在尝试通过编写一个脚本来学习 python,该脚本将通过保留对象名称同时从 folder/file 名称中删除特殊字符和额外数据来清理我的下载文件夹。
即:
../Completed Downloads/random.download.here.x264.team
../Completed Download/random download here
以及
file.name.randomstring_randomstring.mkv
file name randomstring randomstring (date).mkv
我已经搜索了一段时间,但虽然我可以制作一个脚本来查看这些文件 - 但我似乎无法将其提取出每个单独的特殊字符并重命名。当我这样做时,我得到:
Traceback (most recent call last):
File "C:\Python27\Scripts\plexprep.py", line 7, in <module>
os.rename(dir, dir.replace(".", "").lower())
WindowsError: [Error 2] The system cannot find the file specified
这是我的脚本的开头:
import fnmatch
import os
#Matches directories for Plex and renames directories to help Plex crawl.
for dir in os.listdir('F:\Downloads\Completed Downloads'):
if fnmatch.fnmatch(dir, '*'):
os.rename(dir, dir.replace(".", "").lower())
#Matches filenames for Plex and renames files/subdirectories to help Plex crawl.
正如@cricket_007 在评论中所说,您应该通过在路径前添加 r
来转义反斜杠:
for dir in os.listdir(r'F:\Downloads\Completed Downloads'):
但是 WindowsError
是由其他原因引起的:在您的循环中,dir
只会是子文件夹的 name,而不是它的完整路径。一个可能的解决方案是:
base = r'F:\Downloads\Completed Downloads'
for dir in os.listdir(base):
path = os.path.join(base, dir)
# Now use your os.rename() logic
我目前正在尝试通过编写一个脚本来学习 python,该脚本将通过保留对象名称同时从 folder/file 名称中删除特殊字符和额外数据来清理我的下载文件夹。
即:
../Completed Downloads/random.download.here.x264.team
../Completed Download/random download here
以及
file.name.randomstring_randomstring.mkv
file name randomstring randomstring (date).mkv
我已经搜索了一段时间,但虽然我可以制作一个脚本来查看这些文件 - 但我似乎无法将其提取出每个单独的特殊字符并重命名。当我这样做时,我得到:
Traceback (most recent call last):
File "C:\Python27\Scripts\plexprep.py", line 7, in <module>
os.rename(dir, dir.replace(".", "").lower())
WindowsError: [Error 2] The system cannot find the file specified
这是我的脚本的开头:
import fnmatch
import os
#Matches directories for Plex and renames directories to help Plex crawl.
for dir in os.listdir('F:\Downloads\Completed Downloads'):
if fnmatch.fnmatch(dir, '*'):
os.rename(dir, dir.replace(".", "").lower())
#Matches filenames for Plex and renames files/subdirectories to help Plex crawl.
正如@cricket_007 在评论中所说,您应该通过在路径前添加 r
来转义反斜杠:
for dir in os.listdir(r'F:\Downloads\Completed Downloads'):
但是 WindowsError
是由其他原因引起的:在您的循环中,dir
只会是子文件夹的 name,而不是它的完整路径。一个可能的解决方案是:
base = r'F:\Downloads\Completed Downloads'
for dir in os.listdir(base):
path = os.path.join(base, dir)
# Now use your os.rename() logic