**已关闭。**此问题为not reproducible or was caused by typos。目前不接受回答。
这个问题是由一个错字或一个无法再重现的问题引起的。虽然类似的问题可能在这里是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
7小时前关闭
Improve this question的
我试图将一个命令导入到一个python应用程序中,当在bash shell中执行时,它可以工作,并且是:
./converti.sh nameFileXML
字符串
这是Python程序中的一个,它不起作用
if i.endswith(".xml") or i.endswith(".XML"):
print(i)
#cmd = './converti.sh'
#os.system("converti.sh < tempFile")
#subprocess.Popen(cmd, i, shell=True, executable='/bin/bash')
subprocess.run('converti.sh',i)
型
我还尝试了其他方法将其插入到应用程序中,正如你可以从上面的代码中看到的那样,但它们不起作用。在这种特殊情况下,它给了我错误:
Traceback (most recent call last):
File "/home/utente/creaPDF/converti1.py", line 17, in <module>
subprocess.run('converti.sh',i)
File "/usr/lib/python3.10/subprocess.py", line 503, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.10/subprocess.py", line 780, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
型
我哪里错了?
2条答案
按热度按时间7xzttuei1#
目前我没有一个Linux/ Unix系统,但在wsl上它应该工作类似。我将所有文件存储在同一个文件夹中。你应该能够执行subprocess.run(),参数在列表中:
Python文件:
字符串
Bash脚本-ReadXML.sh:
型
XML Dummy - file.xml:
型
kxeu7u2r2#
subprocess.run函数要求命令及其参数以列表形式传递。此外,如果要在shell环境中执行命令,则应提供shell=True参数。
字符串
我将命令字符串替换为一个列表,其中第一个元素是命令(“converti.sh”),第二个元素是参数(文件名“i”)。subprocess.run用于执行命令。shell=True参数用于在shell中运行命令。可执行文件='/bin/bash'参数指定要使用的shell是Bash。这是可选的,但有助于避免不同shell的潜在问题。请确保将您的_list_of_使用包含文件名的实际列表或可迭代对象创建文件。
注意事项:在命令中使用用户提供的输入时要小心,以避免命令注入等安全漏洞。在子进程调用中使用文件名之前,请确保文件名经过适当的清理或验证。