sys.stdin.name:如何返回Python脚本当前读取的文件名
for line in sys.stdin:
line = re.sub('\$File\$', sys.stdin.name, line)
我在我的Python脚本的主程序里有这段代码,我想返回文件名,但它只返回了<stdin>
。有什么想法吗?
再说一次,这个脚本是一个git smudge脚本,应该写入正在提交的文件的文件名,而不是Python脚本的名字。这就是为什么inspect.getfile()在这里也不管用。
谢谢
2 个回答
0
另一个选择是使用 inspect
模块:
echo "import inspect; print inspect.stack()[0][1]" > /tmp/foo.py
python /tmp/foo.py
/tmp/foo.py
0
也许你可以试试用 __name__
或者 os.path.realpath(__file__)
:
如果你是在导入这个文件:
print __name__
如果你是在运行这个文件:
print os.path.realpath(__file__)
或者,使用 sys
:
print sys.argv[0]