从文件中读取列表

Read list from a file

我想从文件中读取一个简单的列表。但是不能将列表元素彼此分开。

这是我的文件:

"11","Arial","red","white","black","200x200","My Project"

这是我的阅读函数:

def fread(file_name):
    user_file=open('{}'.format(file_name),"r")
    file_content=user_file.read()
    user_file.close()
    return str(file_content)

这是不起作用的部分:

conf_file=fread("settings")
conf_file.split(",")
print(conf_file[2])

这个returns 1 而不是红色

str.split 不会改变字符串,因为它们是不可变的。您需要将 return 值分配回变量:

conf_file = fread("settings")
conf_file = conf_file.split(",")
print(conf_file[2])

行包含:

open('{}'.format(file_name), 'r')

如果不需要修改输入字符串,可以直接写成下面这样:

open(file_name, 'r')

由于您的所有项目都用双引号引起来,Python 会将它们包含在字符串中。如果只想使用字符串中的值,则需要使用字符串的一部分来删除它们。用逗号分隔后添加此行:

conf_file = [value[1:-1] for value in conf_file]

现在像 '"11"' 这样的数据将只是 '11'。请注意,这不会将 string 11 转换为 int 11。

您需要在 "commas" 上拆分,并删除封闭的 double-quotes -

此外,不需要四行函数来读取文件内容:

conf_file = [part.strip('"') for part in open(filename).read().split(",")]

您可以使用 csv 模块。

import csv

def fread(file_name):
    with open(file_name) as f:
        return next(csv.reader(f))

print(fread("file.name"))