我想从python代码中多次调用一个程序,并将该程序的输出保存在文本文件中.我现在的第一个问题就是调用其他代码.我必须重定向到另一个目录并在output.txt上调用./rank.这就是我试图这样做的方式:
TheCommand = "~/src/rank-8-9-2011/rank output.txt"
os.system(TheCommand)
Run Code Online (Sandbox Code Playgroud)
但我得到一个解析错误.
[Parsing error on line ]Unknown error: 0
Run Code Online (Sandbox Code Playgroud)
我在Mac OS 10.5.8上运行python2.7.我不知道问题是什么.我也尝试过使用子进程:
subprocess.call(["~/src/rank-8-9-2011/rank", "output.txt"])
Run Code Online (Sandbox Code Playgroud)
这找不到目录(我感觉我错误地使用了子进程),但我不知道os.system有什么问题.
为什么带有负索引的 sys.argv 允许打印与 sys.argv[0] 相同的值?这也是,它允许最多传递的参数数量。
因此,在developers.google.com 上调用hello.py,如下所示(带有3 个参数,包括脚本名称):python hello.py Sumit Test
将允许访问 sys.argv[-1]、[-2] 和 [-3],它们都打印与 argv[0] 相同的值,即 hello.py,但 argv[-4] 将抛出预期错误:
Traceback (most recent call last):
File "hello.py", line 35, in <module>
main()
File "hello.py", line 31, in main
print (sys.argv[-4])
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
代码是:
import sys
# Define a main() function that prints a little greeting.
def main():
# Get the name from the command line, using 'World' as a fallback.
if len(sys.argv) >= 2:
name = …Run Code Online (Sandbox Code Playgroud) 我打开一个文件:
mylog = open('test.log', 'w')
Run Code Online (Sandbox Code Playgroud)
有时一些内容是在mylog我的申请运行期间写的; 但有时在应用程序的运行时间内没有写任何东西,这取决于.
在这两种情况下,似乎test.log始终在磁盘上创建该文件.
有没有办法只在第一个内容写入磁盘时将文件写入磁盘?(mylog.write('blah')例如类似的东西)
即如果mylog.write('...')永远不会被调用,则test.log不会在磁盘上创建(空)文件.
我只是注意到,当我运行pyqt应用程序并关闭它时,该应用程序将关闭,但是该过程仍然有效。显然,即使关闭了应用程序,正在运行的进程也不会关闭。
Traceback (most recent call last):
File "F:\Projects\XYZ\XYZ\XYZ.py", line 414, in <module>
sys.exit(app.exec_())
SystemExit: 0
Run Code Online (Sandbox Code Playgroud)
当我在线搜索时,它说如果返回值为0,这是正常终止。如您所见,在我运行该应用程序时,该过程一直在堆积。

那么我该如何克服这个问题呢?
我正在处理一些Python代码,这是从Apache调用的CGI脚本。
代码要做的第一件事是(我相信)尝试使用以下命令关闭stdin / stdout / stderr:
for fd in [0, 1, 2]:
try:
os.close(fd)
except Exception:
pass
Run Code Online (Sandbox Code Playgroud)
通常,这可以正常工作,但是,如果它们没有打开,则会出现“ python.exe已停止工作”,“导致程序无法正常工作的问题”错误消息(Win32异常)。
几个问题:
我从sys.argv [1]得到一个超出范围错误的列表,我尝试用这段代码制作一个简单的脚本.
import sys
print sys.argv
Run Code Online (Sandbox Code Playgroud)
我在cmd上得到这个:
C:\...\...\...\py>back.py exampleargv
['C:\\...\\...\\...\\py\\back.py']
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我没有得到下一个arg.
我创建了一个函数,但可能会弹出错误.这就是为什么我想使用异常将所有错误概括为同一个消息.
但是,此函数包含多个sys.exit()调用.
因此,except如果引发错误,我希望我的代码跳转到处理程序中,除非它是由引起的sys.exit().我该怎么做呢?
try:
myFunction()
except:
print "Error running myFunction()"
def myFunction():
sys.exit("Yolo")
Run Code Online (Sandbox Code Playgroud) 我正在做一个我必须制作多层板的项目.这就是它的作用:
这个多层板将贯穿终端.它将创建一个名为clipboardd的文件,并将所有复制的文本保存在那里.该人可以根据需要添加任意数量的复制文本,如果他愿意,他也可以清除多页面文件.
这是代码:
import pyperclip
import sys
jim=open('multiclipboardd','w')
#This will copy text to the multiclipboard
if len(sys.argv)==2 and (sys.argv[1].lower())=='save':
jim=open('multiclipboardd','a')
jim.write(pyperclip.paste())
jim.write('\n')
print('The text has been pasted to the multiclipboard!')
jim.close()
#This will read text from the multiclipboard
elif len(sys.argv)==2 and (sys.argv[1].lower())=='list':
kk=open('multiclipboardd')
print(kk.read())
#This will delete the text of the multiclipboard
elif len(sys.argv)==2 and (sys.argv[1].lower())=='delete':
jim=open('multiclipboardd','w')
jim.write('')
print('The clipboard has been cleared!')
#jim and kk are just variables
Run Code Online (Sandbox Code Playgroud)
该文件的名称是Panda.py
python panda.py save在终端中调用应该将复制的文本保存到名为clipboardd的文件夹中,它确实存在!当我尝试调用它时,这完全正常.
但是,当我尝试 …
我正在玩Python3,每次我运行Python3 ex14.py下面的代码,我打印(f"Hi {user_name}, I'm the {script} script.")我得到的{user_name}权利,但{script}显示我正在运行的文件加上变量{user_name}
from sys import argv
script = argv
prompt = '> '
# If I use input for the user_name, when running the var script it will show the file script plus user_name
print("Hello Master. Please tell me your name: ")
user_name = input(prompt)
print(f"Hi {user_name}, I'm the {script} script.")
Run Code Online (Sandbox Code Playgroud)
如何打印我正在运行的文件?
基本上我的问题是标题,
例如在shell中:
>>> import sys
>>> sys.stdout.write('Hello')
Hello5
Run Code Online (Sandbox Code Playgroud)
(与stderr)相同
但是从一个文件:
import sys
sys.stdout.write('Hello')
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
Run Code Online (Sandbox Code Playgroud)
(与stderr)相同
那为什么会这样呢???
python ×10
sys ×10
argv ×2
python-2.7 ×2
python-3.x ×2
cgi ×1
file ×1
io ×1
macos ×1
printing ×1
pyqt ×1
pyqt4 ×1
python-3.6 ×1
stderr ×1
stdin ×1
stdout ×1
try-except ×1
windows ×1