簡體   English   中英

Python-使用Popen打開gnome編輯器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM