如何使用Python将2列写入/添加到.txt文件中?

时间:2019-01-29 22:00:04

标签: python list loops text

我是编程新手,我在一个小项目中工作,对此我遇到了问题:

我想在一个.txt文件中附加2个不同的列。

def write_file_content(file_name_to_write):
    container=[]
    date=get_current_date()
    time=get_current_time()
    container.append(date)
    container.append(time)

  with open(get_EveryDayTrans_folder_path()+file_name_to_write+".txt","a") as edit_file:
        for nm in range(1,11):
            edit_file.write('%s.\n'%nm)
        for item in container:
            edit_file.write('%s\n' %item)

使用此代码,我得到以下输出: 1。 2。 3。 4。 5, 6。 7。 8。 9。 10。 2019年1月29日 晚上10:40

但是我想要这样的输出:

  1. 2019年1月29日

  2. 10:40 PM

3。

4。

5。

6。

7。

8。

9。

10。

2 个答案:

答案 0 :(得分:2)

您的代码有两个问题需要解决:

  1. 您正在使用两个循环,一个循环然后另一个循环打印到文件。您需要组合这些循环,以便可以在同一循环迭代中知道要打印的编号和项目。您只有一次机会*可以正确地打印一行,因此您需要准备好该行上的所有内容。
  2. 您要在前面的数字后面写一个换行符。这样可以防止您在同一行上写更多文本。而是在一次write()调用中打印所有格式化在一起的数据,最后以\r\n打印。
with open(get_EveryDayTrans_folder_path()+file_name_to_write+".txt","a") as edit_file:
    nm = 1
    for item in container:
        edit_file.write('%s. %s\r\n' % (nm, item))
        nm += 1

*只有一次机会,除非您返回并再次编辑文件中的行。

答案 1 :(得分:1)

有一个非常方便的python函数,名为 zip 它需要两个iterables(= list和类似的东西),并返回元组,其中每个元组都包含两个元素。好吧,有点像拉链。 它通常用于并行地遍历两个列表。 在您的情况下,这将是:

  

对于nm,以zip(范围(1,11),容器)表示的项目:

然后您就可以打印nm和项目 我对%s的风格不太熟悉,所以我只写:

  

edit_file.write(“ {} {}”。format(nm,item))

或者如果您使用python 3.6左右:

  

edit_file.write(f“ {nm} {item}”)

希望有帮助!

p.s .: 我刚刚看到您的第二列只有两项。当 shorter 迭代器用尽时,zip功能停止。在您的情况下,您可能想要相反的情况。为此,itertools模块中有 zip_longest

  

从itertools导入zip_longest   对于nm,zip_longest(range(1,11),容器,fillvalue =“”)中的项目:

这将返回:

nm,项目=(0,容器[0])

nm,项目=(1,容器[1])

nm,项目=(2,“”)

nm,项目=(3,“”)