Python Nautilus脚本

你好,
我正在尝试为nautilus编写Python脚本.
要获取在Nautilus Right Pane中选择的文件列表,您可以使用
$ nautilus_script_selected_file_paths环境变量是
通常可用于脚本.实际上,它可以与bash脚本一起使用
但不使用Python脚本
导入操作系统
files = os.environ ['nautilus_script_selected_file_paths'].splitlines()
给出:
文件" ",第1行,<模块>
文件"/usr/lib/python2.5/userdict.py",第22行,在__getItem__中
筹集钥匙扣(钥匙)
keyError:'nautilus_script_selected_file_paths'
弗雷德里克·伦德(Fredrik Lundh)解释说,所有环境变量均不
可以从应用程序的子过程访问.
所以我的问题是如何在python中获取nautilus选择的文件
脚本?
谢谢,
米歇尔
- -
Michel Leunen http://linux.leunen.com

# 回答1


Michel Leunen Schrieb:
壳牌和
python script.环境变异是一个Unix-Process-thing,因此
控制它们的规则适用于 * all *流程 - 外壳是一个
其中,没有什么特别的.
如果Shell-Script获取变量,则Python-Script也将.
您确定外壳得到值吗?还是只是默默地忽略
缺少价值,而python则不是吗?根据文档(我
只有Google搜索了可变名称),该变量似乎仅设置为"仅
如果本地" [1],无论这意味着什么.https://help.ubuntu.com/community/nautilusscriptshowto
diez
# 回答2


Diez B. Roggisch aécrit:
是的,这也是我想的,但请尝试:打开终端和类型
$ echo $ hostname
您将获得计算机的名称.
现在尝试一下:
$ python
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"/usr/lib/python2.5/userdict.py",第22行,在__getItem__中
筹集钥匙扣(钥匙)
KeyError:"主机名"
看来这是因为主机名未导出.
但是,就Nautilus脚本而言,如何解决这个问题?
- -
Michel Leunen http://linux.leunen.com
# 回答3


Michel Leunen Schrieb:
是的,这也是我想的,但请尝试:打开终端和类型
$ echo $ hostname
您将获得计算机的名称.
现在尝试一下:
$ python
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"/usr/lib/python2.5/userdict.py",第22行,在__getItem__中
筹集钥匙扣(钥匙)
KeyError:"主机名"
如果主机名未导出,这是正确的事情.
上面的回声在当前的壳环境中执行.如果它
不是 - 为什么本地和导出之间会有任何区别
完全变量?
如果你放
我不确定外壳是否有构建的东西
具有与其他过程不同的环境不同的产卵壳填充过程.
但是,如果您愿意,可以做这样的事情:
#!/bin/bash
导出变量_name
python/the/python/script.py
您创建了一个shell-script 首先是环境,然后
调用Python.
diez
# 回答4


Diez B. Roggisch aécrit:
哦,这是个好主意,我会尝试的.
谢谢
- -
Michel Leunen http://linux.leunen.com
# 回答5


在2008-09-15周一的22:00 +0200上,Diez B. Roggisch写道:
是的,这也是我想的,但请尝试:打开终端和类型
$ echo $ hostname
您将获得计算机的名称.
现在尝试一下:
$ python
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"/usr/lib/python2.5/userdict.py",第22行,在__getItem__中
筹集钥匙扣(钥匙)
KeyError:"主机名"
如果主机名未导出,这是正确的事情.
上面的回声在当前的壳环境中执行.如果它
不是 - 为什么本地和导出之间会有任何区别
完全变量?
如果你放
我不确定外壳是否有构建的东西
具有与其他过程不同的环境不同的产卵壳填充过程.
但是,如果您愿意,可以做这样的事情:
#!/bin/bash
导出变量_name
python/the/python/script.py
您可以创建一个首先导出环境的壳牌,然后
调用Python.
迪兹
- -
或者,当您在.bashrc或
无论它在哪里创建.那可能是正确的事
在这种情况下要(TM).
干杯,
悬崖
# 回答6


>>看来是因为主机名未导出.
或者,当您在.bashrc或
无论它在哪里创建.那可能是正确的事
在这种情况下要(TM).

当然不是,因为OP使用网络监视软件称为
Nautilus-并使用环境将状态传达给子流程
变量.与.bashrc无关.
diez

# 回答7


2008年9月15日星期一,下午2:00,Diez B. Roggisch 或者,在创建它时,在.bashrc或Where创建它时导出该变量.在这种情况下,这可能是正确的事情(TM).

当然不是,因为OP使用了名为Nautilus的网络监视软件
- 并且使用环境变量将状态传达给子流程.
与.bashrc无关.
只是为了澄清,OP正在谈论Nautilus,如GNOME文件中
经理,不是某些网络监视器.
- 克里斯
- -
遵循鬣蜥的路径... http://rebertia.com

# 回答8


克里斯·里伯特·施里布(Chris Rebert Schrieb):
当然不是,因为OP使用了称为Nautilus-的网络监视软件,该软件使用环境变量将状态传达给子流程.

只是为了澄清,OP正在谈论Nautilus,如GNOME文件中
经理,不是某些网络监视器.
嗯,是的 - 我与纳​​吉奥斯混淆了.请不要问我为什么.
虽然这一点是 - .bashrc与此无关.
diez

# 回答9


在9月15日,21:46,米歇尔·莱昂(Michel Leunen) ::
我没有结果.
该脚本按预期工作:
------------------
#! /usr/bin/python
# - * - 编码:UTF8 - * -
导入OS,系统
#nauitus_script_selected_file_paths:文件的文件
选择通过线反馈分开(newline)(仅
对于本地文件)
#nauitus_script_selected_uris:uris选择文件
通过线反馈分开(newline)
#nauitus_script_current_uri:当前位置的URI
#nauitus_script_window_geometry:窗口的位置和大小
当前的
键=(" nautilus_script_selected_file_paths",
" nautilus_script_selected_uris"," nautilus_script_current_uri",
" nautilus_script_window_geometry")
ft = open("/home/kaer/stupid.txt"," w")
对于[(key,os.nviron.get(key,'not undy'))的key_value in
键]:
ft.write("大约(%s):%s \ n"%key_value)
file_names = sys.argv [1:]
对于索引,inmerate中的file_name(file_names):
ft.write("%s:[%s] \ n"%(index,file_name)))))
如果OS.Path.Isfile(file_name):os.rename(file_name,'%03d-%s'%
(索引+1,file_name))
ft.close()
------------------
我在Nautilus中选择了3个文件(故意创建).
那些使用该内容创建的文件和愚蠢的文件:
------------------
大约(nautilus_script_selected_file_paths):/home/kaer/baz
/home/kaer/bar
/home/kaer/foo
大约(nautilus_script_selected_uris):file:/// home/kaer/baz
file:/// home/kaer/bar
file:/// home/kaer/foo
大约(nautilus_script_current_uri):file:/// home/kaer
大约(nautilus_script_window_geometry):1280x885+0+25
0:[BAZ]
1:[bar]
2:[foo]
------------------
您也可以使用sys.argv [1:],这将为您提供列表
选定的文件.
希望那样.
# 回答10


Kaer写道:
是的,的确,它可以与您的代码一起使用.谢谢你.
我只需要找出为什么它不适用于我的.问题是
那些nautilus脚本很难调试.
感谢您的帮助,
米歇尔
-
Michel Leunen http://linux.leunen.com

标签: python

添加新评论