0

Python:「mychoppingfile.py」を切り刻むことなく、1 つのフォルダー内のすべてのファイルから最後の 15 文字の名前を変更 (切り捨て) しようとしています。また、プログラムはファイルごとに 1 回だけ実行する必要があります (これは、処理後に出力ファイルを新しいディレクトリに移動することで処理されると思いますか?)。これは私が持っているものです:

#!/usr/bin/python

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

3 に答える 3

1

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

直面している問題を特定するのを忘れました。

いずれにせよ、ファイル名が 16 文字より短い場合は、名前を空の文字列に変更しようとすることになりますが、これはもちろん間違っています。多分それが問題です。

他に悪い点は、スクリプト自体の名前も変更している可能性があることです。

于 2013-03-26T01:54:14.180 に答える
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 に答える