Python:从管道接收文件时,如何获取文件的URL?
我用Python创建了一个可执行文件,其输入是文件的URL,输出是文件,例如Python:从管道接收文件时,如何获取文件的URL?,python,file,python-2.7,url,pipe,Python,File,Python 2.7,Url,Pipe,我用Python创建了一个可执行文件,其输入是文件的URL,输出是文件,例如 file:///C:/example/folder/test.txt --> url2file --> the file 实际上,URL存储在一个文件(URL.txt)中,我使用管道从DOS命令行运行它: type url.txt | url2file 这很有效 我想在Python中创建一个可执行文件,其输入是一个文件,其输出是该文件的URL,例如 a file --> file2url --&g
file:///C:/example/folder/test.txt --> url2file --> the file
实际上,URL存储在一个文件(URL.txt)中,我使用管道从DOS命令行运行它:
type url.txt | url2file
这很有效
我想在Python中创建一个可执行文件,其输入是一个文件,其输出是该文件的URL,例如
a file --> file2url --> URL
同样,我使用DOS并通过管道连接可执行文件:
type url.txt | url2file | file2url
问题:
file2url
正在接收文件。如何获取文件的URL(或路径) “file2url”通过标准输入(如键盘)接收数据。
数据由内核传输,不一定要有任何文件系统表示。因此,如果没有文件,就没有URL或路径可供您获取。'file2url'通过标准输入(如键盘)接收数据。
数据由内核传输,不一定要有任何文件系统表示。因此,如果没有文件,就没有URL或路径可供您获取。一般来说,您可能无法获取 如果url没有存储在文件中,我似乎很难获得url。想象有人给你读了一条短信。如果没有进一步的信息,你就无法知道它来自哪本书 然而,在某些用例中,您可以这样做 通过管道将url与文件连接在一起。 如果您需要url并且可以这样做,请尝试将url与文件保持在一起。首先让url2file管道连接您的url,然后再连接文件 重组你的管道 如果重新构造管道,可能不需要找到文件的url 为文件编制索引 如果只有一个特定的文件可能被管道传输到file2url,那么您可以预先计算所有文件的哈希值,并将其与url一起存储在您的程序中。在python中,可以使用
dict
来执行此操作,其中键是文件(作为字符串),值是url。您可以使用pickle
将dict对象写入文件,并在程序开始时加载它
然后您可以简单地从这个目录中查找url
您可能希望研究Explorer中的数据库或搜索函数如何处理索引或替代解决方案
搜索文件
您可以使用文件的一个重要行,并在linux上使用类似于grep
或head
的内容来搜索计算机上的所有文件中的这一行。请注意,grep
和head
是程序,而不是python函数。对于DOS,您可能需要在谷歌上搜索相应的程序
仅供参考:grep
在文件中搜索一行文本。
head
输出文件的前几行。我建议只比较文件的前几行,以避免搜索大型文件
搜索计算机上的所有文件可能需要很长时间
您只能搜索与管道输入大小相同的文件
使用url.txt
如果file2url知道文件
url.txt
的位置,则可以在url.txt中查找所有文件,直到找到与通过管道传输到程序中的文件相同的文件。您可以将其与哈希/索引解决方案结合使用。一般来说,您可能无法
如果url没有存储在文件中,我似乎很难获得url。想象有人给你读了一条短信。如果没有进一步的信息,你就无法知道它来自哪本书
然而,在某些用例中,您可以这样做
通过管道将url与文件连接在一起。
如果您需要url并且可以这样做,请尝试将url与文件保持在一起。首先让url2file管道连接您的url,然后再连接文件
重组你的管道
如果重新构造管道,可能不需要找到文件的url
为文件编制索引
如果只有一个特定的文件可能被管道传输到file2url,那么您可以预先计算所有文件的哈希值,并将其与url一起存储在您的程序中。在python中,可以使用dict
来执行此操作,其中键是文件(作为字符串),值是url。您可以使用pickle
将dict对象写入文件,并在程序开始时加载它
然后您可以简单地从这个目录中查找url
您可能希望研究Explorer中的数据库或搜索函数如何处理索引或替代解决方案
搜索文件
您可以使用文件的一个重要行,并在linux上使用类似于grep
或head
的内容来搜索计算机上的所有文件中的这一行。请注意,grep
和head
是程序,而不是python函数。对于DOS,您可能需要在谷歌上搜索相应的程序
仅供参考:grep
在文件中搜索一行文本。
head
输出文件的前几行。我建议只比较文件的前几行,以避免搜索大型文件
搜索计算机上的所有文件可能需要很长时间
您只能搜索与管道输入大小相同的文件
使用url.txt
如果file2url知道文件
url.txt
的位置,则可以在url.txt中查找所有文件,直到找到与通过管道传输到程序中的文件相同的文件。您可以将其与散列/索引解决方案结合使用。让我们尝试通过显而易见的方式来实现:
$ cat test.py | python test.py
import sys
print ''.join(sys.stdin.readlines())
print sys.stdin.name
<stdin>
$cat test.py | python test.py
导入系统
打印“”。加入(sys.stdin.readlines())
打印sys.stdin.name
因此,文件名是“另一种方式是依赖于系统。查找一个命令行,例如,它曾被使用过,但没有一个担保行可以使用。让我们试着用一种明显的方式来实现它:
$ cat test.py | python test.py
import sys
print ''.join(sys.stdin.readlines())
print sys.stdin.name
<stdin>
$cat test.py | python test.py
导入系统
打印“”。加入(sys.stdin.readlines())