小编Tet*_*suo的帖子

如何轻松编写带变量的多行文件(python 2.6)?

目前我正在编写一个python程序中的多行文件

myfile = open('out.txt','w')
myfile.write('1st header line\nSecond header line\n')
myfile.write('There are {0:5.2f} people in {1} rooms\n'.format(npeople,nrooms))
myfile.write('and the {2} is {3}\n'.format('ratio','large'))
myfile.close()
Run Code Online (Sandbox Code Playgroud)

这有点令人厌倦,并且会受到输入错误的影响.我希望能做的就像是

myfile = open('out.txt','w')
myfile.write(
1st header line
Second header line
There are {npeople} people in {nrooms} rooms
and the {'ratio'} is {'large'}'
myfile.close()
Run Code Online (Sandbox Code Playgroud)

有没有办法在python中做这样的事情?一个技巧可能是将其写入文件然后使用sed目标替换,但有更简单的方法吗?

python file multiline output

6
推荐指数
1
解决办法
2万
查看次数

Python子进程:命令在Python中失败,但在Shell中工作

我试图通过Python的子进程运行命令,但无法正常运行。如果我输入外壳:

pack < packfile.dat
Run Code Online (Sandbox Code Playgroud)

pack我的软件在哪里,又packfile是输入文件,那么软件运行正常。

如果我在python中尝试:

import subprocess as sp
import shlex

cmd = 'pack < packfile.dat'.split()
p = sp.Popen(cmd)
Run Code Online (Sandbox Code Playgroud)

该软件抱怨:

Pack must be run with: pack < inputfile.inp 

Reading input file... (Control-C aborts)
Run Code Online (Sandbox Code Playgroud)

它挂在那里。

最后一部分特定于我的软件,但事实是,运行两种命令的两种方法给出的结果不同,而实际情况并非如此。

谁能告诉我我在做什么错?

实际上,我最终打算这样做:

p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
stdout, stderr = p.communicate()
Run Code Online (Sandbox Code Playgroud)

由于我对此并不陌生,如果这不是最佳做法,请告诉我。

提前致谢。

python command-line subprocess

1
推荐指数
1
解决办法
750
查看次数

标签 统计

python ×2

command-line ×1

file ×1

multiline ×1

output ×1

subprocess ×1