Python эквивалент для записи в файл, как в оболочке - PullRequest
0 голосов
/ 11 июля 2011

Есть ли способ записи в файл, как в сценарии оболочки, но в python, выполнив что-то похожее на это:

cat >> document.txt <<EOF
Hello world 1
var=$var
Hello world 2
EOF

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Если я правильно понимаю вопрос, вы ссылаетесь на здесь документ в bash. Я не думаю, что в Python есть прямой эквивалент, но вы можете вводить многострочные строки, используя """ (тройные кавычки), чтобы разделить начало и конец, например,

>>> long_string = """First
... Second
... Third"""
>>> print long_string
First
Second
Third

который вы могли бы затем записать в файл:

myFile = open("/tmp/testfile", "w")
myFile.write(long_string)
myFile.close()

и достигните того же, что и в вашем примере с bash.

2 голосов
/ 11 июля 2011
with open('document.txt', 'w') as fp:
    fp.write('''foo
{variable}
    '''.format(variable = 42))

Хотя вы, вероятно, хотите сделать несколько вызовов fp.write (или print) для каждой строки или использовать textwrap.dedent, чтобы избежать проблем с пробелами, например,

with open('document.txt', 'w') as fp:
    print >>fp, 'foo' # in 3.x, print('foo', file = fp)
    print >>fp, variable

Это, вероятно,Лучше всего просто прочитать учебник .

...