Почему при попытке печати напрямую в файл возникает sys.stdout
следующая синтаксическая ошибка:
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f1=open('./testfile', 'w+')
>>> print('This is a test', file=f1)
File "<stdin>", line 1
print('This is a test', file=f1)
^
SyntaxError: invalid syntax
Из справки (__ builtins__) у меня есть следующая информация:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
Итак, каков был бы правильный синтаксис для изменения стандартной потоковой записи для печати?
Я знаю, что есть разные, возможно, лучшие способы записи в файл, но я действительно не понимаю, почему это должна быть синтаксическая ошибка ...
Было бы полезно получить хорошее объяснение!
python
file
python-2.7
Алекс
источник
источник
print()
- встроенная функцияprint
python 3.x, а оператор python <3.x. Сообщение показывает2.7.2+
.from __future__ import print_function
? В Python <3 print - это утверждение:help(__builtins__)
отображение этого вообще является ошибкой.__builtins__.__dict__['print'](value, file=f1)
хотя и работает).Ответы:
Если вы хотите использовать
print
функцию в Python 2, вам необходимо импортировать из__future__
:Но вы можете добиться того же эффекта и без использования функции:
источник
print - ключевое слово в python 2.X. Вам следует использовать следующее:
источник
print(args, file=f1)
- это синтаксис Python 3.x. Для использования 2.x питонаprint >> f1, args
.источник
from __future__ import print_function
. Тогда вы можете использовать четкие обозначения как в Python 2, так и в 3.AttributeError: 'str' object has no attribute 'write'
с вашим синтаксисомf1 = open('path_to_your_file', 'w')
Вы можете экспортировать оператор печати в файл без изменения кода. Просто откройте окна терминала и запустите свой код следующим образом:
источник
Это перенаправит ваш вывод print в файл:
источник
В Python 3.0+
print
это функция , с помощью которой вы бы вызывалисьprint(...)
. В более ранней версииprint
это заявление , которое вы бы сделали с помощьюprint ...
.Чтобы распечатать файл в Python более ранней версии, чем 3.0, вы должны:
>>
Оператор направляет печать в файлf
.источник