Я пытаюсь написать сценарий, который будет обновлять папку текстовых файлов на основе таблицы поиска. Таблица поиска - это имя файла, oldpath, новый путь. Скрипт просматривает каждый текстовый файл для имени файла, если он обновляет старый путь в той же строке с новым путем. Код:Python 2.5 - Обновить папку текстовых файлов из значений, хранящихся в списке поиска
# Import
from array import *
import glob
# Specify the lookup table, to keep it simple drop it in with the workspaces
Lookup = "./Lookup.csv"
# Specify the
Workspaces = glob.glob('./*.wor')
# Open the Lookup table
for line in open(Lookup).readlines():
# Create the list to store the lookup parameters of the lookup line
LookupList = []
# Split the lookup csv at the comma
for i in line.split(","):
#print i
LookupList.append(i)
# Use the list parameters to populate variables (could use list parameters but
# easier for now to assign to variable)
FileName = LookupList[0]
OldPath = LookupList[1]
NewPath = LookupList[2]
# We now have variables to use in the replace statement
# Use the Workspaces Glob to loop through the workspaces
for wor in Workspaces:
# Try to open the the first workspace (text file)
f = open(wor, 'r+')
# Loop through the open file
for line in f.readlines():
# For each line check whether the current list value (FileName) is in the line
if '"' + OldPath + '"' in line:
print line
# Update the line, replacing the old path with the new path.
line.replace(OldPath, NewPath);
# Close the workspace file
f.close()
Все, кажется, работает, как положено, в заявлении для печати 5 строк с конца нашел правильные строки, которые содержат строки поиска из поиска, но файл не обновляется.
Я читал столько, сколько могу найти в режимах открытия файлов и обновления файлов, но нет очевидного решения. Я думаю, проблема заключается в чтении/записи в тот же файл. Маршрут, который я выбрал, открывает поиск и встраивает файлы, которые нужно изменить. Альтернативой является открытие файла, а затем цикл через поиск.
С удовольствием записываем обновленный файл в другое имя/папку, проблема в том, что если вы прокручиваете файлы для обновления, обновите строку на основе поиска, когда вы перейдете к следующей строке поиска перезапишет предыдущее изменение.
Любые идеи с благодарностью получены. Aplogies, если описание кажется запутанным, с удовольствием прояснить любые области, где цель не очевидна.
Благодаря
Пол
Есть несколько проблем с кодом, первый из которых я замечаю, что вы используете только последнюю строку файла Lookup.csv. –
Я слепой? Где вы пишете обновление или записываете в любой файл? –
Файл не обновляется, так как вы ничего не писали. В настоящее время вы пытаетесь изменить 'line' только в памяти, но вам также нужно будет присвоить результат чему-то: result = line.replace (OldPath, NewPath)' –