Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:我试图在一个目录中重命名(切掉)文件名的最后15个字符_Python - Fatal编程技术网

Python:我试图在一个目录中重命名(切掉)文件名的最后15个字符

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]) 您忘记指定您面临的问题 无论如何,请

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

#!/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个字符的情况
  • 需要处理文件名截断导致冲突的情况(与现有文件名或此过程中的另一个冲突)

我知道,嗯。我意识到在我发布--tnks.之后,我如何排除任何以字母结尾的文件?
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])