【问题标题】:Read lines from a text file into variables将文本文件中的行读入变量
【发布时间】:2014-12-10 17:48:14
【问题描述】:

我的程序中有两个不同的函数,一个将输出写入 txt 文件(函数 A),另一个读取它并将其用作输入(函数 B)。

功能 A 工作得很好(尽管我总是乐于接受有关如何改进的建议)。 它看起来像这样:

def createFile():
    fileName = raw_input("Filename: ")
    fileNameExt = fileName + ".txt" #to make sure a .txt extension is used

    line1 = "1.1.1"
    line2 = int(input("Enter line 2: ")
    line3 = int(input("Enter line 3: ")

    file = (fileNameExt, "w+")
    file.write("%s\n%s\n%s" % (line1, line2, line3))
    file.close()

    return

这似乎工作正常,并会创建一个类似的文件

1.1.1
123
456

现在,函数 B 应该使用该文件作为输入。这是我到目前为止所取得的成就:

def loadFile():
    loadFileName = raw_input("Filename: ")
    loadFile = open(loadFileName, "r")

    line1 = loadFile.read(5)

这就是我卡住的地方,我知道如何使用前 5 个字符,但我也需要第 2 行和第 3 行作为变量。

【问题讨论】:

  • 你坚持哪一部分?你的代码在哪里,它到底有什么问题? “变量变量”是个坏主意,我会读取文件并将每一行存储在字典中{'A': 123, ...}
  • 这不是一个好主意......你可能真的不想这样做......就像@jonrsharpe建议的那样将它作为列表或字典来获取......魔术变量通常不受欢迎...
  • 对不起,我希望我更新的问题更清楚..@jonrsharpe 库确实似乎是我想要的,但我不知道如何将文件中的数据获取到库中......而且,我知道,为什么使用“变量变量”是个坏主意?
  • 这是个坏主意,因为当您可以拥有一个列表 lines 并访问例如lines[n]?这也使得for line in lines: 更容易,这对于个人姓名来说将是一个巨大的痛苦。你是什​​么意思“图书馆”?如果你的意思是“字典”,RTFM.
  • @jonrsharpe 我的意思确实是字典,对不起,我再看看文档

标签: python file lines


【解决方案1】:
f = open('file.txt')
lines = f.readlines()
f.close()

lines 是你想要的

其他选项:

f = open( "file.txt", "r" )
lines = []
for line in f:
    lines.append(line)
f.close()

更多阅读:

https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

【讨论】:

    【解决方案2】:
    from string import ascii_uppercase
    my_data = dict(zip(ascii_uppercase,open("some_file_to_read.txt"))
    print my_data["A"]
    

    这会将它们存储在以字母为键的字典中...如果您真的想将其塞入变量中(请注意,通常这是一个可怕的想法),您可以这样做

    globals().update(my_data)
    print A
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多