在Linux中将文件作为参数传递

时间:2014-02-18 15:29:56

标签: python linux

我有一个python脚本,它通过sys.argv将文件作为参数。

在Linux中将此文件作为参数传递的最佳方法是什么?

我已经尝试在我的python脚本的第一行添加这行代码,认为这可以让我将文件拖放到它上面,但这似乎不起作用。

#!/usr/bin/env python

我有什么遗失的吗?干杯

2 个答案:

答案 0 :(得分:5)

这是一个非常基本的例子,它接受第一个参数(sys.argv [1]),我们假设它是一个文件名,打开它,并打印所有行。

import sys

f = open(sys.argv[1])
lines = f.readlines()

for line in lines:
    print line

f.close() 

您可以通过输入python

来调用此文件
<source_file.py> <filename>

如果我的源文件名为readMyFile.py并且我想阅读myFile.txt,我会输入

python readMyFile.py myFile.txt

python system

至于完成拖放操作,您总是可以将Python调用放入bash脚本中,然后将参数从bash脚本传递给python脚本。看看this stack overflow thread关于此问题。从本质上讲,您只需使用此代码制作一个bash脚本。

#!/bin/bash
python <source_file.py> "$1"

或在我的具体例子......

#!/bin/bash
python readMyFile.py "$1"

看起来你可能不得不在.desktop文件中附带一些上述语法。查看此askubuntu链接

答案 1 :(得分:4)

尝试使用python script.py filename

#!/usr/bin/env python行是shebang行。

如果您使脚本成为可执行脚本(即,使用chmod将其文件权限更改为可执行文件),则shebang可帮助识别脚本类型。

替代shebang将直接使用python二进制的路径,如#!/usr/bin/python,但路径可能在不同的机器上有所不同,因此我们通常从{{1}获取绑定路径}}

如果您每次都使用env运行脚本,则通常不需要shebang,但如果脚本在其他位置引用,则可能会导致问题。我在我的所有脚本中添加了一个shebang,以确保它在我的编辑器中是什么脚本。

请注意,扩展名python script.py完全是可选的,为了一般性,您可能希望在更大的项目中运行.py来完成任务;这种模块化确保可执行脚本可以使用python,bash或任何其他脚本语言,只要它能够执行它应该执行的操作。

不,你不能拖放文件并将其作为参数传递给python脚本,即使它是可执行文件。

相关问题