2015-07-13 4 views
0

У меня есть каталог, содержащий тысячи файлов txt. Я прочитал и исследовал эти файлы с Glob (поиск определенных строк в файле), и я приложил имена файлов файлов, представляющих интерес для списка в Python, например, так:Python: переименовать файлы на основе списка Python

list_of_chosen_files = ['file2.txt', 'file10.txt', 'file17.txt', ...]

I Я буду использовать этот список и для других вещей, но теперь я пытаюсь понять, как использовать модуль ОС для перекрестных ссылок на имена файлов в каталоге по сравнению с приведенным выше списком и, если имя файла находится в этом списке, добавить «1-» в начало имени файла. Я сохранил «1-» в переменной для повторного использования. Вот то, что я до сих пор: -

var = "1-" 

import os 
for filename in os.listdir("."): 
    if filename == list_of_chosen_files[:]: 
     os.rename(filename, var+filename) 
     print filename 

Это работает без каких-либо ошибок в анаконда, но ничего не Печатное и ни один из файлов не становятся переименованы. Я чувствую, что это должно быть такое легкое решение, но я беспокоюсь о том, чтобы выталкивать каталоги с модулем ОС, если я действительно не знаю, что делаю.

Любая помощь была бы принята с благодарностью! Благодаря!

ответ

2

Ваш вопрос является эта строка:

if filename == list_of_chosen_files[:]: 

Вы сравниваете одну строку (filename) для всего списка (list_of_chosen_files[:] просто дает вам назад весь список). Если вы хотите проверить, если файл находится в списке, используйте:

if filename in list_of_chosen_files: 

Это будет проверять, чтобы увидеть, если list_of_chosen_files содержит filename.

+0

спасибо! Работала отлично. Такой момент «духа». Еще раз спасибо! – user3817675

1

Ошибка: if filename == list_of_chosen_files[:]:

os.listdir(".") только дает Вам результаты BASENAME. Не полный путь. Они не существуют в вашем текущем рабочем каталоге. Вы должны были бы присоединиться к ним обратно с корнем:

root = 'full Path of your directory' 
for item in os.listdir(root): 
    fullpath = os.path.join(root, item) 
    os.rename(fullpath, fullpath.replace('filename', 'var+filename')) 
Смежные вопросы