我正在读取数据文件(文本),并生成许多报告,每个报告都写入不同的输出文件(也是文本).我正在打开它们:
fP = open('file1','w')
invP = open('inventory','w')
orderP = open('orders','w')
......等等,最后有一组相应的close()行.
如果我可以使用for循环打开它们,使用fP名称和文件名列表,我可以保证关闭相同的文件.
我尝试使用字典fp:filename,但[显然]不起作用,因为fP变量未定义,或字符串'fP'不是一个好的文件对象名称.
由于这些是输出文件,我可能不需要检查打开错误 - 如果我无法打开一个或多个,我无论如何都无法继续.
有没有办法在循环中从名称列表中打开一组文件(不超过10个左右)?
这是O'Reilly Cookbook(截断数据集)的一个例子
headers = ['Symbol','Price','Date','Time','Change','Volume']
rows = [{'Symbol': 'AA', 'Volume': 181800, 'Change': -0.18,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 39.48},
{'Symbol': 'AIG', 'Volume': 195500, 'Change': -0.15,
'Time': '9:36am', 'Date': '6/11/2007', 'Price': 71.38} ]
with open('stocks2.csv','w') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
输出文件\n在每行的末尾都有一个,显然在结尾处还有一个.当我将它带入Excel时,每行之间会出现空白行.如果我用Notepad ++打开它也一样.
但是,如果我more从命令行,\n不显示.
我\n在文件的末尾看到了关于a的另一个问答- 但这个问题\n在每一行的末尾都是关于a 的.(我不明白为什么more不给\n.)
我计划将文件带入OpenOffice Calc.
我有一个元组列表("twoples")
[('aaa',2), ('BBB',7), ('ccc',0)]
Run Code Online (Sandbox Code Playgroud)
我需要按顺序打印它,但是
>>> sorted([('aaa',2), ('BBB',7), ('ccc',0)])
Run Code Online (Sandbox Code Playgroud)
给
[('BBB', 7), ('aaa', 2), ('ccc', 0)]
list.sort(key=str.tolower)
Run Code Online (Sandbox Code Playgroud)
(显然)不起作用,因为
AttributeError: type object 'str' has no attribute 'tolower'
Run Code Online (Sandbox Code Playgroud)
我不想更改列表中的字符串.
另一个答案给了
list.sort(key=lambda (a, b): (a.lower(), b))
Run Code Online (Sandbox Code Playgroud)
但那必须是Python 2的东西,因为
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
... 一开始 (
itemgetter()没有用,因为只允许一个'key'