2012-03-18 3 views
2

Пожалуйста, советы, почему это не делает никакой работы, и не показывает никаких ошибок:Python обработки текстовых файлов

def main(x, y): 
    x=open('DCR.txt') 
    x.read() 
    print(x) 
    y=open("111.txt", "a+") 
    y=x 
    y.close() 

Я пытаюсь открыть один файл и переместить его содержимое в другой. 111.txt не создается при запуске скрипта. Вопрос кажется глупым, но он просто не работает, мне нужна помощь. Спасибо заранее.

+0

ли вы на самом деле * работает * ваш 'основной)' функция (? В отличие от C, 'main' не является волшебным именем в Python; функция 'main()' не будет запускаться, если вы не запустите ее. – geoffspear

+0

Да! Вот и все !!! –

ответ

4

y=x не «перемещает содержимое» из одного файла в другой. Он просто перепечатывает имя (переменную) y, так что впоследствии он ссылается на тот же объект, что и x.

Чтобы скопировать содержимое из одного файла типа объекта к другому, используйте shutil.copyfileobj:

from shutil import copyfileobj 

with open('DCR.txt') as input: 
    with open("111.txt", "a+") as output: 
     copyfileobj(input, output) 
+0

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

+0

@ ror6ax: вы ищете подходящий каталог? –

+0

Да, я пробовал несколько раз. Кроме того, y = open ("111.txt", "a +") должен создать файл в рабочем каталоге, но это не так. –

0

Если я не ошибаюсь, назначение y=x просто делает переменную y точку на тот же дескриптор файла как x. На самом деле это не переносит никаких данных. Вместо этого вы должны позвонить y.write(x.read()), где x.read() возвращает содержимое DCR.txt.

1

Вы не можете просто назначить новое значение объекту и подумать, что оно будет записано в файл. Также для другого случая. Вы должны вызвать правильные методы.

Это должно работать:

def main(x, y): 
    x=open('DCR.txt') 
    content_x = x.read() 
    x.close() 
    print(content_x) 
    y=open("111.txt", "a+") 
    y.write(content_x) 
    y.close() 
0

Ваш код реально не имеет смысла. Вы передаете топор и параметр ау функции, но перезаписать оба (так почему передать их в первую очередь?):

def main(): 
    x = open('DCR.txt') 

Вы не используете содержание чтения из файла, вы, наверное, уже видели, что печать (x) не печатает содержимое файла, а печатает дескриптор файла.

content = x.read() 

Вы заменить второй дескриптор файла с первым, который на самом деле не делает ничего, так как вы не используете файл ручки мимо этой точки (для закрытия одного из них, за исключением). То, что вы, вероятно, хотите сделать, это записать содержимое первого файла на второй:

y.write(content) 

Упрощенная функция выглядит следующим образом:

def main(): 
    x = open('DCR.txt') 
    content = x.read() 
    y = open("111.txt", "a+") 
    y.write(content) 

Вы получаете какую-либо ошибку, работающее что?

+0

Нет ошибок. Он просто ничего не делает. Справочник правильный. –

0

ваша версия

def main(x, y): 
    x=open('DCR.txt') 
    x.read() #you should assign it to a variable 
    print(x) 
    y=open("111.txt", "a+") 
    y=x #this line just assign the file object to y, not content 
    y.close() 

вы можете сделать так:

def main(): 
    x=open('DCR.txt').read() 
    y=open("111.txt", "a+") 
    y.write(x) 
    y.close() 
Смежные вопросы