从文本文件

时间:2015-04-27 12:02:29

标签: python

我想知道是否可以从文本文件重命名文件夹中的文件 ..?

我解释:

我有一个文本文件,我们在其中找到每个行的名称和路径(以及校验和)。 我想重命名每个照片文件(路径)的名称。

从文本文件中提取:

  

...

     

15554615_05_hd.jpg /photos/FRYW-1555-16752.jpg de9da252fa1e36dc0f96a6213c0c73a3   15554615_06_hd.jpg /photos/FRYW-1555-16753.jpg 04de10fa29b2e6210d4f8159b8c3c2a8

     

...

我/照片文件夹:

My /photos folder

实施例

将文件FRYW-1555-16752.jpg重命名为15554615_05_hd.jpg

我的脚本(只是一个开头):

for line in open("myfile.txt") :
    print line.rstrip('\n') # .rstrip('\n') removes the line breaks

4 个答案:

答案 0 :(得分:2)

这样的事应该奏效。将txt替换为文件读取,文件名使用os.walk

之类的内容
import os
import shutil

txt = """
15554615_05_hd.jpg /photos/FRYW-1555-16752.jpg de9da252fa1e36dc0f96a6213c0c73a3
15554615_06_hd.jpg /photos/FRYW-1555-16753.jpg 04de10fa29b2e6210d4f8159b8c3c2a8
"""

filenames = 'FRYW-1555-16752', 'FRYW-1555-16753.jpg'

new_names = []
old_names = []
hashes = []
for line in txt.splitlines():
    if not line:
        continue

    new_name, old_name, hsh = line.split()
    new_names.append(new_name)
    old_names.append(old_name)
    hashes.append(hsh)

dump_folder = os.path.expanduser('~/Desktop/dump')  # or some other folder ...
if not os.path.exists(dump_folder):
    os.makedirs(dump_folder)
for old_name, new_name in zip(old_names, new_names):
    if os.path.exists(old_name):
        base = os.path.basename(old_name)
        dst = os.path.join(dump_folder, base)
        shutil.copyfile(old_name, dst)

答案 1 :(得分:1)

import os

with open('file.txt') as f:
    for line in f:
        newname, file, checksum = line.split()
        if os.path.exists(file):
            try:
                os.rename(file, os.sep.join([os.path.dirname(file), newname]))
            except OSError:
                print "Got a problem with file {}. Failed to rename it to {}.".format(file, newname)

答案 2 :(得分:1)

问题可以通过以下方式解决:

  • 使用os.listdir()循环浏览所有文件。 listdir将帮助您获取所有文件名,使用当前目录,使用os.listdir(“。”)
  • 然后使用os.rename()重命名文件:os.rename(old_name,new_name)

示例代码:假设您正在处理* .jpg

added = "NEW"

for image in os.listdir("."):
    new_image = image[:len(image)-4] + added + image[len(image)-4:]
    os.rename(image, new_image)

答案 3 :(得分:0)

是的,可以做到。

您可以在子问题中划分问题:

  1. 打开txt文件
  2. 使用txt-file中的行来标识要重命名的图像以及要为其指定的新名称
  3. 打开图像副本内容并使用新名称将其写入新文件,保存新文件
  4. 删除旧文件
  5. 我相信会有更快/更好/更有效的方法来做到这一点,但这一切都来分裂和征服你的问题及其子问题。

    可以使用循环在python中完成,在读/写模式下打开文件,使用“os”模块来访问文件系统。