sys.stdin.name:如何返回Python脚本当前读取的文件名

0 投票
2 回答
1154 浏览
提问于 2025-04-18 09:34
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]

撰写回答