Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sys.stdin.name:如何返回python脚本当前读取的文件名_Python_Git_Filenames - Fatal编程技术网

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

sys.stdin.name:如何返回python脚本当前读取的文件名,python,git,filenames,Python,Git,Filenames,我在python脚本的主脚本中有这段代码,我想返回文件名,但这只是返回。 有什么想法吗 同样,此脚本是git smudge脚本,它应该写入提交文件的文件名。。不是python脚本的名称。这就是为什么inspect.getfile在这里也不起作用的原因 谢谢也许您可以尝试使用_名称_或os.path.realpath文件_: 如果要导入文件,请执行以下操作: for line in sys.stdin: line = re.sub('\$File\$', sys.stdin.name, l

我在python脚本的主脚本中有这段代码,我想返回文件名,但这只是返回。 有什么想法吗

同样,此脚本是git smudge脚本,它应该写入提交文件的文件名。。不是python脚本的名称。这就是为什么inspect.getfile在这里也不起作用的原因

谢谢

也许您可以尝试使用_名称_或os.path.realpath文件_:

如果要导入文件,请执行以下操作:

for line in sys.stdin:
    line = re.sub('\$File\$', sys.stdin.name, line)
print __name__
如果您正在文件中运行:

for line in sys.stdin:
    line = re.sub('\$File\$', sys.stdin.name, line)
print __name__
或者,使用sys:


另一种选择是使用检查模块:


请看这里:这个答案似乎是针对linux的。。我需要它为所有机器工作。git smudge/clean过滤器在其标准输入上传递一个blob的数据。如果有文件名,则其格式为.git/objects/17/b8361bab1a69cbaa360eafb72e57b53bb72e04,这可能对您没有用处。但更可能是从各种包文件和增量中动态提取/构造的数据,在这种情况下,根本没有真正的文件名。你到底想做什么?我有一堆由svn创建的带有scm头的文件。我想将我的版本控制切换到git,这样当我提交时,这些头会随着提交而改变///$文件$/$Date$/$Branch$/$Revision$这些只是打印出我的python脚本的名称和位置,而不是我提交的文件。
echo "import inspect; print inspect.stack()[0][1]" > /tmp/foo.py
python /tmp/foo.py
/tmp/foo.py