我想
即,第一个文件作为读写模式打开,第二个文件作为读取模式打开。 例如,
1st_file
CHINESE JAPANESE KOREAN
CA 0.1 0.1 1.1
WA 0.2 -0.2 1.3
OR -0.1 1.1 0.1
UT 0.3 1.4 -0.9
2nd_file(无标题)
1.1
1.3
-0.1
1.3
重新创建1st_file
CHINESE JAPANESE KOREAN VIETNAMESE TOTAL
CA 0.1 0.1 1.1 1.1 2.4
WA 0.2 -0.2 1.3 1.3 2.6
OR -0.1 1.1 0.1 -0.1 1.0
UT 0.3 1.4 -0.9 1.3 2.1
此处,2nd_file包含有关VIETNAMESE列的值。
所以,首先要将标题,1)VIETNAMESE和2)TOTAL写入1st_file的标题。
然后,将2nd_file中的值写入1st_column的相应VIETNAMESE列。
最后,计算1st_column的值并将其写入(例如TOTAL)到1st_column。
我尝试用r +模式打开第一个文件,但效果不好。仅供参考,真正的1st_files有大约1亿行和20列。
怎么做?
答案 0 :(得分:1)
虽然我同意iCodez并且您不应该使用txt文件(可能是SQL甚至是json)......我会给你一个替代方案。
file1 = open("example.txt", "r")
alldatainfile1 = file1.read()
file1.close()
file2 = open("example.txt", "r")
alldatainfile2 = file2.read()
file2.close()
既然您正在使用变量而不是文件,那么......
file1 = open("example.txt", "w")
file1.write(alldatainfile2)
file1.close()
请注意,我使用“w”写入文件(将删除所有信息,然后保存新信息),但如果您只想将信息添加到文件而不是删除所有信息,则应使用“a”表示追加数据。
最后我建议3个提示:
For line in yourfile
代码检查信息是否已存在,如果是这种情况则不要复制,但应该使用json正确完成。你可以这样做:
total = 0
for line in alldatainfile1:
linesplit.split(" ") #3 whitespaces, since you got it that way
total = total + line[1]
print("total of column1: " + str(total))
答案 1 :(得分:0)
您可以尝试以下代码:
FILE_1 = "File1.in"
FILE_2 = "File2.in"
def getTableData(file_name):
"""Retreive the Table Data from 'file_name' and return it as a list()"""
file_1 = open(file_name,'r')
data = [cols.split() for cols in file_1.read().split('\n')]
data[0].insert(0,' ')
return data
def getColumn(file_name):
"""Retrieve the new Column data from file 'file_name' and return it as a list"""
file_2 = open("File2.in", 'r')
col = file_2.read().split('\n')
return col
def appendColumn(table, col_name, col):
"""Append the new Column to the table"""
table[0].append(col_name)
for x in xrange(len(col)):
table[x+1].append(col[x])
return table
def total(table):
"""Calculate the Total in the table"""
col =[]
for i in xrange(len(table)-1):
tot = 0.0
for j in xrange(len(table[i+1])-1):
tot += float(table[i+1][j+1])
col.append(str(tot))
return col
def writeBack(file_name, table):
"""Writing the table back to 'file_name'"""
fout = open(file_name,"w")
for row in table:
line = '\t\t'.join(row)
fout.write(line + "\n")
table = appendColumn(getTableData(FILE_1), "VIETNAMESE", getColumn(FILE_2))
col = total(table)
table = appendColumn(table, "TOTAL", col)
writeBack(FILE_1, table)
<强>限制:强>
Saelyth
,“w”选项将删除上一个文件并创建一个新文件。因此,请在尝试之前确保备份数据。我还假设新列名不包含在第二个文件中,并且它是从不同的源接收的。
您要写回的最终数据表是一个二维矩阵,因此您只需执行table[i][j] = "New Data"
即可在(i,j)处编辑任何条目。
答案 2 :(得分:0)
我更喜欢使用readlines()
来编辑文本文件。这应该可以解决问题:
fileA = open("whatever the file name of first file is", 'r')
fileALines = fileA.readlines()
fileA.close()
fileB = open("whatever the file name of second file is", 'r')
fileBLines = fileB.readlines()
fileB.close()
newLines []
newLines[0] = fileALines[0] "VIETNAMESE TOTAL" #I'm not sure how you intend on getting the column header, but you can just insert it here.
lengthList = [len(header) for header in fileALines[0]] #Used for column widths
for lineA,lineB in zip(fileALines[1:],fileBLines):
itemList = (lineA + lineB).split()
itemList.append(str(sum(map(float,itemList))))
for length,item in zip(lenghtList,itemList):
newLines.append("{:^{length}}".format(item, length=length))
newLines.append("\n")
fileC = open("newFile.txt", 'w')
for line in newLines:
fileC.write(line)
fileC.close()
使用我编写的代码将创建第三个文件,如果您有任何问题,可以使用它来调试它。
此代码无效,如果:
我也同意评论和其他答案,文本文件可能不是最好的方法,但它可以做到。希望这会有所帮助。
答案 3 :(得分:0)
如果你想要快速和结构化的文件使用python的csv库。
import csv
main_headers = ['state', 'chinese']
compound_data = []
with open('languages1.csv', 'r') as csv_file:
csvreader = csv.DictReader(csv_file)
for row in csvreader:
compound_data.append(row)
print(compound_data)
with open('languages2.csv', 'r') as csv_file:
csvreader = csv.DictReader(csv_file)
for row in csvreader:
compound_data.append(row)
print(compound_data)
输出:
[{'state': 'ca', 'chinese': '1.0'}, {'state': 'vt', 'chinese': '2.0'}]
[{'state': 'ca', 'chinese': '1.0'}, {'state': 'vt', 'chinese': '2.0'}, {'state': 'ca', 'vietnamese': '-0.1'}, {'state': 'vt', 'vietnamese': '1.5'}]
获得数据后,您可以重写为csv文件或任何您想要的文件并应用格式。