Python:我试图在一个目录中重命名(切掉)文件名的最后15个字符
Python:我试图重命名(切掉)单个文件夹中所有文件的最后15个字符,而不切掉“mychoppingfile.py”。此外,程序必须只为每个文件运行一次(我想这将通过在处理后将输出文件移动到新目录来处理?)。这就是我所拥有的:Python:我试图在一个目录中重命名(切掉)文件名的最后15个字符,python,Python,Python:我试图重命名(切掉)单个文件夹中所有文件的最后15个字符,而不切掉“mychoppingfile.py”。此外,程序必须只为每个文件运行一次(我想这将通过在处理后将输出文件移动到新目录来处理?)。这就是我所拥有的: #!/usr/bin/python import os files = os.listdir('.') for filename in files: os.rename(filename, filename[:-15]) 您忘记指定您面临的问题 无论如何,请
#!/usr/bin/python
import os
files = os.listdir('.')
for filename in files:
os.rename(filename, filename[:-15])
您忘记指定您面临的问题 无论如何,请注意,如果文件名短于16个字符,那么您将尝试将其重命名为空字符串,这当然是错误的。也许这就是问题所在
另一件糟糕的事情是,您可能也在重命名脚本本身。一种方法是使用字典:
import os
files = os.listdir('.')
seen = dict()
for filename in files:
if len(filename) > 15 and filename != 'mychoppingfile.py':
tofile = filename[:-15]
if tofile not in seen:
print filename + " -> " + filename[:-15]
seen[tofile] = 1
但也存在很多问题:
- 应该使用
只获取文件os.walk
- 需要处理文件名少于16个字符的情况
- 需要处理文件名截断导致冲突的情况(与现有文件名或此过程中的另一个冲突)
exclude = ['mychoppingfile.py'] # could add more exclusions to this list
for filename in files: # see notes below
if not filename in exclude:
os.rename(filename, filename[:-15])