我是编程新手,我在一个小项目中工作,对此我遇到了问题:
我想在一个.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
但是我想要这样的输出:
2019年1月29日
10:40 PM
3。
4。
5。
6。
7。
8。
9。
10。
答案 0 :(得分:2)
您的代码有两个问题需要解决:
\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,“”)
等