Bra*_*don 0 python file-io for-loop if-statement
在我的程序中,我有一个文件,然后我读取for循环中的所有行,检查每一行的开头.然后将每一行添加为变量.这里有40多行,它们几乎都是一样的但是其中一个elif语句并没有返回真实的.startswith无效.无论如何这里的文件内容基本上是一堆保存的信息fN将是我保存的变量,john将是我想要的.所以这个方法就是这样做的,或者它是假设的
fN:john
fP:1
fE:father email
mN:mother name
mP:1
mE:mother email @ bomg.com
a:1233 adress lane
c:city
s:state
zC:1234534
hP:(1928)phone-1123
cP:1113333
eN:emergancy
eNu:number
c1N:cluubiie 1
c1G:1st
c1B:1-23-34
c2N:clubbie 2
c2G:grade 2
c2B:birth 2
c3N:clubb 3
c3G:grade 3
c3B:birth 3
Run Code Online (Sandbox Code Playgroud)
方法
def fillWindow(self,student):
global fileDirectory
location = os.path.join(fileDirectory, student + '.txt')
file = open(location, 'r')
for line in file.xreadlines():
if line.startswith('fN'):
fN = line.split(':')[1]
elif line.startswith('fP'):
fP = line.split(':')[1]
elif line.startswith('fE'):
fE = line.split(':')[1]
elif line.startswith('mN'):
mN = line.split(':')[1]
elif line.startswith('mP'):
mP = line.split(':')[1]
elif line.startswith('mE'):
mE = line.split(':')[1]
elif line.startswith('a'):
a = line.split(':')[1]
elif line.startswith('c'):
c = line.split(':')[1]
elif line.startswith('s'):
s = line.split(':')[1]
elif line.startswith('zC'):
zC = line.split(':')[1]
elif line.startswith('hP'):
hP = line.split(':')[1]
Run Code Online (Sandbox Code Playgroud)
就在这里即使在文件中有一行以cP开头,也永远不会返回True
elif line.startswith('cP'):
cP = line.split(':')[1]
print('True')
elif line.startswith('eN'):
eN = line.split(':')[1]
elif line.startswith('eNu'):
eNu = line.split(':')[1]
elif line.startswith('c1N'):
c1N = line.split(':')[1]
elif line.startswith('c1G'):
c1G = line.split(':')[1]
elif line.startswith('c1B'):
c1B = line.split(':')[1]
elif line.startswith('c2N'):
c2N = line.split(':')[1]
elif line.startswith('c2G'):
c2G = line.split(':')[1]
elif line.startswith('c2B'):
c2B = line.split(':')[1]
elif line.startswith('c3N'):
c3N = line.split(':')[1]
elif line.startswith('c3G'):
c3G = line.split(':')[1]
elif line.startswith('c3B'):
c3B = line.split(':')[1]
elif line.startswith('c4N'):
c4N = line.split(':')[1]
elif line.startswith('c4G'):
c4G = line.split(':')[1]
elif line.startswith('c4B'):
c4B = line.split(':')[1]
Run Code Online (Sandbox Code Playgroud)
您应该考虑这两条线如何相互作用:
elif line.startswith('c'):
...
elif line.startswith('cP'):
Run Code Online (Sandbox Code Playgroud)
此外,您应该考虑使用字典来保存所有值,您可以大大缩短您的程序.
这是一段非常可怕的代码.你真的需要所有这些元素是个体变量吗?为什么不沿着这些方向的字典:
{'fN':'john',
'fP':'1',
...
}
Run Code Online (Sandbox Code Playgroud)
你只能在几行中产生:
dct = {}
f = file(location, 'r')
for line in f:
k, v = line.split(':')
dct[k] = v
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |