0
我试图从每个文件中获取信息并使用它来创建一个新文件。每个文件都有一行由一系列数字组成。我希望一个文件的每一行与另一个文件的每一行对齐,然后将每个数字放在一个文件的一行中,以便与另一个文件中另一行的相同位置中的另一个数字相遇。文件'Volume.txt'的每行都移动了一个点(因此代码的k = j + 1)。多文件处理
* 操作完成后,我不断收到一个重复的汉字。那么我哪里错了?非常感谢! *
下面是代码:
e = open('C:/Users/MC/Desktop/EODP.txt', 'r')
v = open('C:/Users/MC/Desktop/Z/Volume.txt', 'r')
n = open('C:/Users/MC/Desktop/vovere.txt', 'w')
m = 0 #Used later for letting me know that the first line in the new file completed
for i in range(0, 3256): # there are 3257 lines per the two files EOPD and Volume
l = [] # create a list to put data in during operation
er = e.readline() #
es = er.split(', ') # create a list the data from that line of file
vr = v.readline() #
vs = vr.split(', ') # same
for j in range(len(es)):
k = j + 1 # file Volume is shifted one point ahead
try:
if float(vs[k]) == 0.0:
vovere = 0.0 # vovere is the name of the output for each point
elif vs[k] == '' or vs[k] == ' ':
vovere = 0.0
else:
vovere = float(es[j])/float(vs[k])
except ValueError: #kept getting this error: some points weren't numbers
vovere = 0.0
except IndexError: # Each file didn't always exactly equal in line length
vovere = 0.0
la = l.append(float(vovere)) #Creates the list for each new line in new file
ls = str(la)
l1 = ls.replace('[', '') # Taking away extra notations so the new file is a little
l2 = l1.replace(']', '') # more clean and can be put into other programs
n.write(l2)
if m == 0: # From here on out is just for me, not necessary**
print("The first line is done!")
m += 1
else:
pass
e.close() #** Except these of course
print(e.closed)
print("Yes, EOPD.txt is closed")
v.close()
print(v.closed)
print("Yes, Volume.txt is closed")
n.close()
print(n.closed)
print("Yes, vovere.txt is now ready for further manipulation!!")
这个问题不清楚,是每个文件中只有一行或多行在每个文件中?如果每个文件中有多行,每行上是否有多个数字?如果一行中有更多数字,分隔符是什么?我几乎跳过了阅读代码的过程,因为看起来写一些能够完成问题文本部分描述的工作的简短代码会更容易。 – LJNielsenDk 2012-08-04 16:48:45
对此感到抱歉。我从中提取的两个文件每行都有多行。每行有多个数据点,每个数据点由逗号和空格分隔。我试图将第一行从一个文件匹配到另一个文件的第一行,然后从EODP.txt中获取数据点1,从Volume.txt获取数据点2,并在两行中指出每个其他数据,交错相对位置。我希望这对每一个后续行重复。每个文件具有相同的行数,但并不是必须使用每行所使用的相同数量的数据点。希望有帮助,谢谢! – mrfc 2012-08-04 17:00:59
交错点含义:文件卷,第1行,第2点与文件EODP,第1行,第1点。然后文件卷第1行,第3点与文件EODP,第1行,第2点。重复整个文件EODP行长度1,应该有le len len(卷1)-1。 – mrfc 2012-08-04 17:08:37