Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换Python中的一行_Python - Fatal编程技术网

如何替换Python中的一行

如何替换Python中的一行,python,Python,我正在尝试用Python编写一个评估程序,在这个程序中,我必须更新一个商店的库存文件 到目前为止,我的代码是: #以读取模式打开文件 文件=打开(“data.txt”、“r”) #将每行数据读取到vairble FileData=file.readlines() #关闭文件 file.close()文件 总计=0#创建可变总计 AnotherItem=“y”#创建 当AnotherItem==“y”或AnotherItem==“y”或AnotherItem==“是”或AnotherItem==

我正在尝试用Python编写一个评估程序,在这个程序中,我必须更新一个商店的库存文件

到目前为止,我的代码是:

#以读取模式打开文件
文件=打开(“data.txt”、“r”)
#将每行数据读取到vairble
FileData=file.readlines()
#关闭文件
file.close()文件
总计=0#创建可变总计
AnotherItem=“y”#创建
当AnotherItem==“y”或AnotherItem==“y”或AnotherItem==“是”或AnotherItem==“是”或AnotherItem==“是”时:
打印(“请输入条形码”)
UsersItem=input()
对于文件数据中的行:
#将该行拆分为第一节和第二节
条形码=行。拆分(“:”[0]
项目=行。拆分(“:”[1]
价格=行分割(“:”[2]
股票=行分割(“:”[3]
如果条形码==UsersItem:
文件=打开(“data.txt”、“r”)
#将每行数据读取到vairble
FileData=file.readlines()
#关闭文件
file.close()文件
打印(项目+“£”+str(浮动(价格)/100)+“股票:+str(股票))
打印(“您想买多少”)
多少=输入()
总计+=浮动(价格)*浮动(数量)
文件=打开(“data.txt”、“a”)
库存水平=浮动(库存)
file.write(item+”:“+price+”:“+str(float((库存水平float(hown ')))))
file.close()文件
打印(“是否要购买其他物品?[是/否]”)
AnotherItem=输入()
如果另一项==“n”或“n”或“否”或“否”:
打印(“总价:£”+str(总计/100))
当我试图更新我的股票文件时,它会写入数据文件的末尾,而不是我想要的那一行

file = open("data.txt", "a")
以追加模式打开文件,意味着写入文件末尾而不覆盖数据(添加到文件中,不更改)

使用

而是刷新文件内容并覆盖它们


如果您有一些行,并且只想更改最后一行,请执行以下操作:

data = open("data.txt").read().split("\n")
获取文件行的数组

data[-1] = new_line_contents
将最后一行更改为新内容

open("data.txt", "w").write("\n".join(data))

用刷新新数据的方式写回(将数据中的元素用换行符连接起来)

这并不能回答您的问题,但是
如果另一个项==“n”或“n”或“no”或“no”:
也会被证明是有问题的(并使您选择“no!”),因为即使
另一个项==“n”
将产生
False
。。。或“N”
将产生真实值,例如非空字符串。例如,如果在{“n”、“n”、“no”、“no”、“no”}中有另一个项目,则需要
。这是因为您打开了要追加的文件。如果这是一个文本文件,那么您只能覆盖相同长度的字符,因为它本身没有“记录”。您需要将这些行写入一个新文件,替换需要的行,然后重命名该文件。@cdarke如何重命名文件?@Lightningz1
os.rename
,有关
os
模块,请参阅Python文档。
open("data.txt", "w").write("\n".join(data))