For loop 如何为循环代码更正此错误?

For loop 如何为循环代码更正此错误?,for-loop,python-2.7,performance,For Loop,Python 2.7,Performance,我创建了一个var_集合来包含3个变量:File_股票、File_交易所和File_国家,因为我认为循环执行重复任务会更有效。虽然上面显示的代码的输出是正确的,但当我键入“print stock”或“print exchange”或“print country”时,输出总是错误的,因为它显示的是路径目录,而不是文本文件中的数据 有人知道原因是什么吗?我应该如何修复它?如果您想在数据结构中存储每个文件的数据,您需要使用dict或类似工具来执行此操作: # Define the project na

我创建了一个var_集合来包含3个变量:File_股票、File_交易所和File_国家,因为我认为循环执行重复任务会更有效。虽然上面显示的代码的输出是正确的,但当我键入“print stock”或“print exchange”或“print country”时,输出总是错误的,因为它显示的是路径目录,而不是文本文件中的数据


有人知道原因是什么吗?我应该如何修复它?

如果您想在数据结构中存储每个文件的数据,您需要使用
dict
或类似工具来执行此操作:

# Define the project name and path for input files
# need to use \ before \t and \ to print these characters
Project = "101"
path_Directory =  "C:\Users\\tp\Desktop\project\\"
full_path_Directory = path_Directory + Project

# Set path for files in the program
File_stock = full_path_Directory + "_stock.txt"
File_exchange = full_path_Directory + "_exchange.txt"
File_country = full_path_Directory + "_country.txt"

var_set = [File_stock, File_exchange, File_country]

  for var in var_set:
    var = open(var,'r')
    var = var.read()[3:]
    print var
我还将您的
.read()[:3]
替换为
.read(3)
,只读取三个字符,而不是读取整个文件;效率更高

现在,
data
将有三个键,每个键指向从每个文件读取的3个字符:

Project = "101"

path_Directory =  r"C:\Users\tp\Desktop\project"
names = ['stock', 'exchange', 'country']
data = {}

for name in names:
    path = os.path.join(path_Directory, '{0}_{1}.txt'.format(Project, name))
    data[name] = open(path, 'r').read(3)

如果要在数据结构中存储每个文件的数据,则需要使用
dict
或类似工具:

# Define the project name and path for input files
# need to use \ before \t and \ to print these characters
Project = "101"
path_Directory =  "C:\Users\\tp\Desktop\project\\"
full_path_Directory = path_Directory + Project

# Set path for files in the program
File_stock = full_path_Directory + "_stock.txt"
File_exchange = full_path_Directory + "_exchange.txt"
File_country = full_path_Directory + "_country.txt"

var_set = [File_stock, File_exchange, File_country]

  for var in var_set:
    var = open(var,'r')
    var = var.read()[3:]
    print var
我还将您的
.read()[:3]
替换为
.read(3)
,只读取三个字符,而不是读取整个文件;效率更高

现在,
data
将有三个键,每个键指向从每个文件读取的3个字符:

Project = "101"

path_Directory =  r"C:\Users\tp\Desktop\project"
names = ['stock', 'exchange', 'country']
data = {}

for name in names:
    path = os.path.join(path_Directory, '{0}_{1}.txt'.format(Project, name))
    data[name] = open(path, 'r').read(3)

您的代码不包含
股票
交易所
国家
的任何定义。您的变量名称当前不匹配。提示:使用原始字符串文字以避免
\
被解释为转义码:
r'C:\Users\tp\Desktop\project'
。但是,您不能使用斜杠作为最后一个字符
os.path.join()
非常适合生成更长的路径
os.path.join(path\u目录,项目)
.Martijn,对不起。股票应为归档股票,交易所应为归档交易所,国家应为归档国家。好的,我将导入os并通过写入path\u Directory=os.path.join(path\u Directory,Project)来设置路径。再次感谢!同样,你可以通过提问来纠正错误。谢谢。我将通过一本关于Python的书开始一个良好的基础。有什么建议吗?您的代码不包含
股票
交易所
国家
的任何定义。您的变量名称当前不匹配。提示:使用原始字符串文字以避免
\
被解释为转义码:
r'C:\Users\tp\Desktop\project'
。但是,您不能使用斜杠作为最后一个字符
os.path.join()
非常适合生成更长的路径
os.path.join(path\u目录,项目)
.Martijn,对不起。股票应为归档股票,交易所应为归档交易所,国家应为归档国家。好的,我将导入os并通过写入path\u Directory=os.path.join(path\u Directory,Project)来设置路径。再次感谢!同样,你可以通过提问来纠正错误。谢谢。我将通过一本关于Python的书开始一个良好的基础。有什么建议吗,伙计们?Martijn,我正试图去掉每个文件中的前3个字符。我怀疑这是由于一些编码问题。它出现在每个文本文件中。顺便问一下,{0}{1}代表什么?明白了!0表示项目名称,1表示变量名称。非常优雅!啊,事实上,不是前三个,而是前三个以外的所有东西。:-)是的,这里可以找到使用的字符串格式语法:@TingPing:我怀疑前3个字节是;请查收。如果是这样,请执行
.read().decode('utf_8_sig']
以获取unicode数据。Martijn,我试图删除每个文件中的前3个字符。我怀疑这是由于某些编码问题。它出现在每个文本文件中。顺便问一下,{0}{1}表示?明白了!0表示项目名称,1表示变量名称。非常优雅!啊,事实上,不是前3个,而是前3个。:-)是的,可以在这里找到使用的字符串格式语法:@TingPing:我怀疑前3个字节是;请查收。如果是,请执行
.read().decode('utf_8_sig']
以获取unicode数据。