从另一个文件中获取数据

时间:2015-06-22 17:46:12

标签: python

是否可以从另一个文件中获取数据并将其与我的主输入文件进行比较并替换其中的字符串。我无法解释清楚,所以我只是告诉你。

输入:

Employee Number/Employee Name/Employee Extension
2022/Johnny Storm/188
2023/Reed Richards/189
2024/Sue Storm/190
2025/Ben Grimm/191

我的主输入文件中的日志仅打印员工编号:

Employee Number, Time In
2022,07:27:01
2025,06:59:49
2023,06:40:31
2024,06:40:28

所以我想做的就是......

伪代码:

with open(emplst) as ulst:
  for line in ulst:
    EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/'))
    ulist[EmpNum] = dict(zip(('EmpNum'),(EmpName)))

if enum in EmpNum:
   replace enum with EmpNum + "," + EmpName + " Ext. " + EmpExt

输出:

2022,Johnny Storm Ext. 188,07:27:01

注意: 我也在寻求这种方法的一些信息,但我一直无法替换文本:Extract data from lines of a text file

1 个答案:

答案 0 :(得分:0)

问题在于:

with open(emplst) as ulst:
    for line in ulst:
    EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/'))
    ulist[EmpNum] = dict(zip(('EmpNum'),(EmpName)))

ulst不是可以简单分配值的字典。它是一个file对象,在readonly模式下也是打开的。

为此,我建议你 - >制作一个临时文件write修改后你想要的所有东西

- >删除原始文件

- >然后将临时文件重命名为原始文件。

有点像这样:

with open(emplst) as ulst:
    with open("temp.txt", "w") as temp:
        for line in ulst:
            EmpNum,EmpName,EmpExt = (item.strip() for item in line.split('/'))
            if enum in EmpNum:
                temp.write(EmpNum + "," + EmpName + " Ext. " + EmpExt)
            else:
                temp.write(line) #dont touch it if record is not found
os.remove(emplst)
os.rename("temp.txt",emplst)