0

Python:我正在尝试重命名(切掉)单个文件夹中所有文件的最后 15 个字符,而不切掉“mychoppingfile.py”。此外,程序只能为每个文件运行一次(我猜这将通过在处理后将输出文件移动到新目录来处理?)。这就是我所拥有的:

#!/usr/bin/python

import os
files = os.listdir('.')
for filename in files:
    os.rename(filename, filename[:-15])
4

3 回答 3

1

一种方法是使用字典:

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 
于 2013-03-26T01:56:33.323 回答
0
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])

但是也有很多问题:

  • 应该os.walk用来获取文件
  • 需要处理文件名少于 16 个字符的情况
  • 需要处理文件名截断导致冲突的情况(与现有文件名或此过程中的另一个冲突)
于 2013-03-26T01:58:06.190 回答
0

您忘记指定您面临的问题。

无论如何,请注意,如果您的文件名少于 16 个字符,那么您将尝试将它们重命名为空字符串,这当然是错误的。也许这就是问题所在。

其他不好的事情是您可能还要重命名脚本本身。

于 2013-03-26T01:54:14.180 回答