Python копирует текст из одного файла в другой

Я следую примеру 17 lpthw Зеда А. Шоу, если вы хотите взглянуть на него https://learnpythonthehardway.org/book/ex17.html, и он работает только с одной строкой, но не с несколькими (используя терминал, Windows PowerShell)
исходный файл говорит: «Это тест, который вы тестируете, почему он не работает на нескольких строках 2-я строка говорит «см., но с заглавной буквы СМ.» 2-й файл, который скопировал текст и вставил его с помощью команды записи, говорит: «Это тест, который вы тестируете, почему он не работает на нескольких строках, 2-я строка говорит см., но с заглавной буквы ਍ऀ匀䔀䔀" Я не понимаю этого, я даже скопировал его код, и ни в его, ни в моем пока нет ни одного изменения.

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print "Copying from %s to %s" % (from_file, to_file)

# we could do these two on one line, how?
in_file = open(from_file)
indata = in_file.read()

print "The input file is %d bytes long" % len(indata)

print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to continue, CTRL-C to abort."
raw_input()

out_file = open(to_file, 'w')
out_file.write(indata)

print "Alright, all done."

out_file.close()
in_file.close()`

Я не хочу сильно менять код только потому, что знаю, что это работает для одной строки, и верю, что без особых изменений он может работать, например, со всем эссе.


person jmonster555games    schedule 12.01.2017    source источник
comment
Возможный дубликат конкатенации текстовых файлов Python   -  person Torxed    schedule 12.01.2017
comment
Кстати, LPTHW считается второстепенным учебным пособием. Официальный учебник намного лучше.   -  person TigerhawkT3    schedule 12.01.2017


Ответы (2)


Попробуйте установить правильную кодировку для файла, который вы читаете, когда открываете его open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

person Mikael Hernrup    schedule 12.01.2017

У вас может возникнуть эта проблема из-за разницы в том, как обрабатываются новые строки в Windows и Linux. Взгляните на: Обработка \r\n против \n новых строк в python на Mac против Windows

person Tapan Chugh    schedule 12.01.2017