【问题标题】:How to read array from other file?如何从其他文件中读取数组?
【发布时间】:2020-12-11 16:00:14
【问题描述】:

我有一个包含巨大数组的文件 (list.txt),如下所示:

['1458575', '1458576', '1458577', '1458578'...]

我想在我的脚本中阅读它,但输出是白色的。目标是打印file.txt的行数(list.txt)

numbers_line = open("list.txt", "r")
lines = numbers_line.readlines().split(',')
i=0
f=open('file.txt')
for line in f:
    if i in lines:
        print (line)
    i+=1

但是,如果我将数组直接读取,则它会被读取,但考虑到这是一个巨大的数组,这可能没有帮助。

lines=['1458575', '1458576', '1458577', '1458578', '1458579', '1458580', '1458581', '1458582', '1458583', '1458584']
i=0
f=open('file.txt')
for line in f:
    if i in lines:
        print (line)
    i+=1

感谢您的支持

【问题讨论】:

  • 您想将数组/列表读取为一行还是一个接一个地读取数字?
  • i 是 int 类型,lines 包含 strs...它们永远不会等同...
  • This answer 展示了如何使用ast.literal_eval将包含列表的字符串转换为实际列表
  • @AnuragDhadse 我想逐个读取数组中存在的数字(list.txt);这是我想在其他文件(file.txt)中打印的行数。
  • @RichieV 谢谢,但是列表是整数,可能变量名是错误的并且混淆了。

标签: python arrays file iteration line


【解决方案1】:

readlines 返回行列表,而不是字符串

readline 会返回一个字符串,但 split(',') 会给出一个字符串列表而不是 int

试试这个

import ast
text_file = open("list.txt", "r")
lines = list(map(int, ast.literal_eval(text_file.read().strip())))
i=0
f=open('file.txt')
for line in f:
    if i in lines:
        print (line)
    i+=1

【讨论】:

  • 非常感谢,它不起作用,输出文件是白色的。我该怎么办?
  • 对不起,我的错,我已经编辑了我的答案,你可以试试当前的,我更改了list(map(int, ast.literal_eval(text_file.read().strip())))
【解决方案2】:

使用with open() as : 而不是open() 和close(),因为它会在发生错误时自动关闭与文件的连接,而传统手动open() 和close() 不会这样做。

lines=['1458575', '1458576', '1458577', '1458578', '1458579', '1458580', '1458581', '1458582', '1458583', '1458584']
lines = [int(x) for x in lines] # convert to integers

fpath = "list.txt"

with open(fpath, "r") as f:
    for x in f:
        x = x.trim() # remove end of line character
        if int(x) in lines:
            print(x) 

【讨论】:

    【解决方案3】:

    这可以工作

    with open('file.txt') as file:
        content = file.read()
    a = []
    exec('a = ' + content)  # executes - a = ['1458575', ...]
    

    替代方法 - 将 file.txt 复制到新文件 my_lists.py。 在 my_lists.py 文件开头添加 'a = ' 并执行

    from my_lists import a
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2016-11-25
      相关资源
      最近更新 更多