-1

我有一个文件夹,里面有很多这样的文件:

2012-05-09.txt
2012-05-10.txt
2012-05-11.txt
etc. 

现在我想删除连字符并添加“_PHOTOS_LOG”,它最终看起来像这样:

20120509_PHOTOS_LOG.txt
20120510_PHOTOS_LOG.txt
20120511_PHOTOS_LOG.txt
etc.

怎么做 ?

这就是现在的代码:

//updated the code, now its working 

import os
import glob
import os.path
import sys


src = 'D:\\testing/hyphen1'

src = r'D:\testing\test'

for fn in os.listdir(src):
    new_filename = fn.replace('-','').replace('.txt', '_PHOTOS_LOG.txt')
    fn = os.path.join(src, fn)
    new_filename = os.path.join(src, new_filename)
    try:
        os.rename(fn, new_filename)
    except (WindowsError, OSError):
        print 'Error renaming "%s" to "%s"' % (fn, new_filename)
        print sys.exc_info()[1]
4

4 回答 4

1

你可以做这样的重命名:

import os
for filename in os.listdir("."):
    if filename.endswith(".txt"):
        newFilename = filename.replace("-", "")
        os.rename(filename, newFilename[:7]+"_PHOTO_LOG.txt")

os.listdir(".") 返回当前文件夹中条目的名称 filename.endswith(".txt") 验证文件名是否是您的文本文件之一,如果是,它会删除 - 并添加 _PHOTO_LOG结束

于 2012-07-10T11:17:01.977 回答
1
new_filename = old_filename.replace("-", "").replace(".txt", "_PHOTOS_LOG.txt")

这将为您提供新的文件名,如果您想重命名所有文件,则:

import os
for old_filename in os.listdir("."):
    new_filename = old_filename.replace("-", "").replace(".txt", "_PHOTOS_LOG.txt")
    os.rename(old_filename, new_filename)
于 2012-07-10T11:02:03.367 回答
1

对于当前目录中的所有文件:

import os

for fn in os.listdir('.'):
   new_filename = fn.replace('-','').replace('.txt', '_PHOTOS_LOG.txt')
   os.rename(fn, new_filename)

使用os.rename()更改文件名。

单个文件名最终会包含一系列字符串,因此虽然您通常希望使用os模块中的方法,但您可以简单地将它们视为字符串,因为您不是在查看路径,而是简单的文件名并使用replace( )创建新名称。

--

一个文件名显示转换的示例:

fn ='2012-05-09.txt'

然后

fn.replace('-','').replace('.txt', '_PHOTOS_LOG.txt')

将产生'20120509_PHOTOS_LOG.txt'

于 2012-07-10T11:02:47.207 回答
0

您需要遍历文件列表并根据需要重命名它们:

import os
import glob
for name in glob.glob('*.txt'):
  newname = "%s_PHOTOS_LOG.txt" % name.replace('-','')[:-4]
  os.rename(name, newname)

glob.glob函数生成.txt当前目录中的文件列表。

于 2012-07-10T11:03:11.387 回答