我开始学习Python,并在尝试从文件读取值时遇到一些问题。
我的参数文件有点像这样:
var1 11111111
path_value "some/space containing path/file.txt"
var3 something
#some other values
var4 some/value1
var5 some/value2
var6 some/value3
这是我的代码:
file=open('this_file.txt')
for line in file:
fields = line.strip().split()
if(fields[0] in "var1"):
## this will give me 11111111
var_1_value=fields[1]
if(fields[0] in "path_value"):
## this will give me only till "/some/space
path_value_contains=fields[1]
如何正确获取路径?我不确定这是一种有效的做事方式。你能告诉我任何更好的方法吗?
我没有使用任何模块。
答案 0 :(得分:3)
正如我在评论中提到的,我强烈建议你使用一个擅长这个的stdlib模块,但是如果你打算自己动手,那就是问题:
if fields[0] in "path_value"
如果fields[0]
等于 "path_value"
,那就不测试fields[0]
"p"
是"a"
中的任何一个"t"
1}},"h"
,"_"
,if fields[0] == "path_value"
,for line in file:
param_name, *param_values = line.split()
param_value = ' '.join(param_values)
# then proceed as usual
等。
尝试改为:
WITH
MEMBER [Measures].[MaxValue] AS
MAX([Date].[Fiscal].[Fiscal Year].Members, [Measures].[Sales Amount])
SELECT
{[Measures].[MaxValue]} ON COLUMNS
FROM
[Adventure Works]
那就是说,你似乎遇到了一个完全不同的问题,而且这个问题只与复制/粘贴错误有关。如果您使用Python3,可以尝试这样做:
WITH
MEMBER [Measures].[MaxValue] AS
MAX([Date].[Fiscal].[Fiscal Year].Members, [Measures].[Sales Amount])
SELECT
{[Measures].[Sales Amount],[Measures].[MaxValue]} ON COLUMNS,
{[Date].[Fiscal].[Fiscal Year].Members} ON ROWS
FROM
[Adventure Works]
+---------+----------------+----------------+
| | Sales Amount | MaxValue |
+---------+----------------+----------------+
| FY 2005 | (null) | $52,714,102.75 |
| FY 2006 | $23,360,526.01 | $52,714,102.75 |
| FY 2007 | $33,683,804.82 | $52,714,102.75 |
| FY 2008 | $52,714,102.75 | $52,714,102.75 |
| FY 2009 | $50,840.63 | $52,714,102.75 |
| FY 2010 | (null) | $52,714,102.75 |
| FY 2011 | (null) | $52,714,102.75 |
+---------+----------------+----------------+
答案 1 :(得分:2)
您可以将参数放入字典中,让pickle
module完成剩下的工作,而不是编写自定义文本格式并尝试重新读取。
您可以使用pickle.dump(object, file)
将Python对象写入文件。
随后,您可以使用object = pickle.load(file)
从文件中读取Python对象。
此脚本将参数字典写入文件:
parameters = {
'var1': 11111111,
'path_value': 'some/space containing path/file.txt',
'var3': 'something',
'var4': 52
}
import pickle
file_name = 'parameters.pickled'
with open(file_name, 'wb') as out_file:
pickle.dump(parameters, out_file)
此脚本从文件中读取参数字典:
import pickle
file_name = 'parameters.pickled'
parameters = pickle.load(open(file_name, 'rb'))
var1 = parameters['var1']
path = parameters['path_value']
print('var1 =', var1)
print('path =', path)