PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Linux
[问题] ubuntu >导向不能用在subprocess模组
楼主:
asd24693120
(曙光)
2021-05-24 19:03:29
各位前辈您好,由于不知道要放在linux还是python版,若有错版我会马上删文
当我在terminal执行sudo ./sync_to_gps8 >123.txt时,都能够顺利执行,但因为我需要
用python去统整,所以我使用了python的subprocess 模组,但是当我一样执行sudo ./sy
nc_to_gps8 >123.txt,却遇到了这个问题,但我也不知道这是错在哪里,希望各位前辈
指导,谢谢各位前辈
正常在terminal执行:
https://i.imgur.com/m3CBuSH.jpg
用subprocess模组执行(发生错误):
https://i.imgur.com/y9fmwq9.jpg
程式码:
https://i.imgur.com/dmIp5Dk.jpg
作者: goldie (阿良)
2021-05-24 19:48:00
cwd 是否不在哪?找不到 python script 档?改执行 sudo pwd 印出路径来看看?还有,文不对题
作者:
oToToT
(å±å©)
2021-05-24 20:15:00
文有不对题吗OAO?你跟你上面一样多加个 shell=True 就会动了吧我没理解错的话,你不加 shell=True 的话它会去找档案名称为 'sudo ./sync_ ...' 的程式来执行加了会真的 invoke 一个 shell 出来跑你给他的指令
作者: goldie (阿良)
2021-05-24 21:58:00
推楼上 oToToT 大看出问题症结点,高手!这个问题比较像是同个命令能在一般 shell 执行,但是却无法执行于 Python 的 subprocess,另外,错误讯息 No such file or directory 跟…">" 重导向没有关系,所以我才会觉得文不对题
作者:
kenduest
(小州)
2021-05-24 22:13:00
其实官方说很清楚,默认 shell=False 时候,你带入的那个字串会当作要执行时间的程式档案名称你有用 shell 内 io 重导的符号时候,需要用 shell=True毕竟这些符号只有 shell 可以认识,所以会开启外部的shell 程式,把整个字串当命令丢给 shell 执行shell=True 基本上就等于传统 os.system() 使用若你不使用 shell=True 要使用 subprocess.call()一般就是得改成带入 ['sudo', './sysnc_to_gps8']至于 > 123.txt, 可以用 open() 开档带入给 stdout 参数
作者:
oToToT
(å±å©)
2021-05-24 22:38:00
推楼上讲得更清楚
作者:
Typebrook
(Pham)
2021-05-25 08:27:00
推,楼上解释道得很清楚
作者: goldie (阿良)
2021-05-25 12:20:00
ok理解,那不改标题也没差多少了io重导向指的是 shell 的 IO Redirection就是 >、<、2>&1、…、这类的东西由 shell 帮你重导 stdin/stdout/stderr 到其他 fd 或档案
https://wiki-dev.bash-hackers.org/syntax/redirection
作者:
Bencrie
2021-05-25 13:33:00
其实就 exec sudo vs exec sh -c sudo 的差别
继续阅读
请问有熟rapidminer资料探勘工具的人吗?
suede0118
[问题] args特殊字符输入请益
chabaterii09
[问题] Linux 学习资源请益
sam92260
[问题] 有使用Debian10安装Bugzilla 成功过的吗?
fashionjack
[问题] Parallel --retries使用上的问题
starlin2
[问题] Fedora/Ubuntu的网络连线图示被拿掉了
georgent
[问题] Nextcloud 如何从外部访问
MrPanda
Fw: [问题] 有关 /usr/src/linux-headers-*-generic
gowrite
[问题][已解决] gcin 输入法吃键
willy69wu31
[闲聊] Gentoo第一次安装时间分享
jiefang
Links
booklink
Contact Us: admin [ a t ] ucptt.com