Col*_*nic 2 python beautifulsoup
如何在Python中读取整个文件?我希望我的脚本可以运行,但它被调用
script.py log.txtscript.py < log2.txtpython script.py < log2.txtpython -i script.py logs/yesterday.txt你明白了.
我试过了
import fileinput
from bs4 import BeautifulSoup
f = fileinput.input()
soup = BeautifulSoup(f.read())
Run Code Online (Sandbox Code Playgroud)
但我明白了
Traceback (most recent call last):
File "visual-studio-extension-load-times.py", line 5, in <module>
soup = BeautifulSoup(f.read())
AttributeError: FileInput instance has no attribute 'read'
Run Code Online (Sandbox Code Playgroud)
f = open('file.txt', 'r')
data = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)
更进一步,打开从命令行传递的文件,你可以做到:(另外,这是一种更智能的打开文件的方式,而不是f = open(...)你可以做到的with ...)
import sys
with open(sys.argv[1], 'r') as f:
data = f.read()
Run Code Online (Sandbox Code Playgroud)
with作为一种更智能的方式打开文件的原因是因为它会在您离开缩进with块后自动关闭文件.这意味着您不必"担心"文件被打开或忘记了很长时间(这可能导致您的操作系统"打开很多文件句柄")
然后到 sys.argv
sys.argv[1]将是你的python文件后命令行上的第一个参数.
sys.argv[0]将是您的脚本名称.例如:
python myscript.py heeyooo 将会:
sys.argv[0] == "myscript.py"sys.argv[1] == "heeyooo" :)然后有各种各样的模块,在处理文件时会对你感兴趣.
其一,os.path是一个良好的开端,因为你很可能需要做尽可能多的跨平台地,这给你转换选项\为/在Linux上,反之亦然.一些好的是:
你也有os.getcwd()可能是好的:)
而不是使用fileinput,直接打开文件:
import sys
try:
fileobj = open(sys.argv[1], 'r')
except IndexError:
fileobj = sys.stdin
with fileobj:
data = fileobj.read()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2468 次 |
| 最近记录: |