[英]Python - open gnome editor with Popen
我想使用Python使用已打開的文件啟動gedit
(默認gnome文本編輯器)。 我可以這樣做,但是當從Python調用時, gedit
總是會打開一個名為“ Untitled Document 1”的額外標簽,並帶有某種旋轉刷新圖標。
我開始
subprocess.call(["gedit", pathToFile])
但這阻塞了主要過程,所以我現在正在使用
Popen(["gedit", pathToFile])
這兩個命令導致相同的有害行為。
如果我從命令行這樣調用gedit,則不會發生這種情況:
gedit pathToFile
問題的Python方面我缺少什么嗎?
更新 :從公認的答案中,我想到了這個作為可行的解決方案:
Popen(["gedit", pathToFile], stdin=open(os.devnull, 'r'))
我的猜測是它正在嘗試從標准輸入或類似輸入中讀取內容。
嘗試添加stdin=open(os.devnull, 'r')
到Popen
構造函數。
我無法復制在Ubuntu 12.04系統上運行Python 2.7.3的Popen的任何問題。 以下是部分成績單,其中行編號供參考。 在打印第3行或第5行之前,python解釋器顯然已阻塞; 當我退出gedit時,將打印0。 所有的gedit調用都可以正常啟動,而使用Popen的調用都沒有阻止解釋器。 有些文件在被編輯之前就已經存在,有些則沒有。 將shell=True
與subprocess.call一起使用(未顯示示例)沒有區別,即被阻止。
1 >>> import subprocess
2 >>> subprocess.call(['gedit','vv'], stdin=None, stdout=None, stderr=None, shell=False)
3 0
4 >>> subprocess.call(['gedit','vv'])
5 0
6 >>> pid = subprocess.Popen(['gedit','vv']).pid
7 >>> pid
8 3434
9 >>> pid = subprocess.Popen(['gedit','uu']).pid
10 >>> pid
11 3442
12 >>> subprocess.Popen(['gedit','ww'])
13 <subprocess.Popen object at 0x1887c10>
14 >>> subprocess.Popen(['gedit','yy'])
15 <subprocess.Popen object at 0x1847c10>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.