解析非结构化文件并存储在List Python中



当我试图用这个代码读取文件时,它会给我一个错误,说语法错误。

import os
import sys
def main(argv):
bada_file = os.path.join(os.path.dirname(__file__),argv[0],argv[1],)
print(os.path.abspath(__file__))
print(os.path.abspath(bada_file))  
data_list = list()
with open(bada_file, "r+") as read_file:
# (1, "first test"), (2, "next_line") ...
for line in enumerate(read_file.readlines()):
print(line)    
for data in data_list:
print(data)
if __name__ == "__main__":
main(sys.argv[1:])

我试图读取的文件是".OPF".

有人有什么建议吗?请告诉我。这将非常有帮助。谢谢你。

假设您正在cwd中读取一个文件,我将发布两个解决方案。

os.path.dirname(__file__)返回空如果您在cwd中执行,并且文件在cwd,那么代码会工作,但如果您不在cwd中,那么它可能会产生错误,因为它无法获得正确的文件路径。

解决方案os.path.dirname(os.path.abspath(__file__))

这是解决方案。

import os
import sys
def main(argv):
bada_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),argv[0])
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.abspath(__file__)))
data_list = list()
with open(bada_file, "r+") as read_file:
# (1, "first test"), (2, "next_line") ...
for line in enumerate(read_file.readlines()):
print(line)    
for data in data_list:
print(data)
if __name__ == "__main__":
main(sys.argv[1:])

另一个更简单的解决方案(使用os.getcwd(((

import os
import sys
def main(argv):
for file in argv:
bada_file = os.path.join(os.getcwd(),file)

print(bada_file)
#print(os.path.abspath(__file__))
#print(os.path.abspath(bada_file))

with open(bada_file, "r+") as read_file:
# (1, "first test"), (2, "next_line") ...
for line in enumerate(read_file.readlines()):
print(line)    
if __name__ == "__main__":
main(sys.argv[1:])

最新更新