当我运行此代码并为crop
和quantity
输入值时,它不会像crop database.txt
那样将它们写入crop database.txt
,而只是创建crop = input("Which crop? ")
quantity = input("How many? ")
with open ('cropdatabase.txt', 'a+') as file:
lines = file.readlines()
file.close ()
with open ('cropdatabase.txt', 'a+') as file:
for row in lines:
if crop in row:
row = str(a)
split_2 = a.split (',')
split_2.append (quantity)
else:
file.write ('\n')
file.write (crop + ' ')
file.write (quantity + ' ')
file.close ()
作为新的空白文本文件。有人知道为什么吗?是因为我关闭文件的方式吗?
Private Sub button1_click()
Dim inRng As Range, outRng As Range
inSelect:
Set inRng = Application.InputBox("Select Range to Calculate", Type:=8)
If inRng.Cells.Count <> 8 Then
MsgBox "Select a range with 8 cells!", vbCritical
GoTo inSelect
End If
outSelect:
Set outRng = Application.InputBox("Select Cell to Output To", Type:=8)
If outRng.Cells.Count > 1 Then
MsgBox "Select only one cell!", vbCritical
GoTo outSelect
End If
outRng.Value = VanillaCall(inRng.Cells(1), inRng.Cells(2), inRng.Cells(3), inRng.Cells(4), inRng.Cells(5), inRng.Cells(6), inRng.Cells(7), inRng.Cells(8))
End Sub
答案 0 :(得分:1)
如果您以空文件(或不存在)开头,则列表lines
将为空。因此,编写任何内容的代码都不会运行。
答案 1 :(得分:0)
当你打开附加'a'的文件时,说明文件指针放在EOF(文件结束)指针之前。所以你不会读任何数据。
我更喜欢使用'a +',它看起来很棒,但使用特定格式可以更清晰地阅读代码。
试试这个
with open ('cropdatabase.txt', 'r') as file:
lines = file.readlines()
希望这有帮助。
答案 2 :(得分:0)
以下是您的评论代码:
crop = input("Which crop? ")
quantity = input("How many? ")
如果您使用的是python 2,这是一个坏主意。使用raw_input
with open ('cropdatabase.txt', 'a+') as file:
您正在打开此文件以追加,但只是阅读
lines = file.readlines()
file.close ()
由于您使用'with open'
,因此无需关闭with open ('cropdatabase.txt', 'a+') as file:
再一次打开追加。你应该用'w'重写文件
for row in lines:
if crop in row:
row = str(a)
split_2 = a.split (',')
split_2.append (quantity)
这对我没有意义。什么是?
在与split2混淆之后(再次,为什么)你永远不会写任何东西
else:
file.write ('\n')
file.write (crop + ' ')
file.write (quantity + ' ')
现在您将裁剪和数量写入没有匹配的行吗?
file.close ()
再次,不必要的关闭
这是我的代码
crop = raw_input("Which crop? ")
quantity = raw_input("How many? ")
使用raw_input,两者都是字符串
with open ('cropdatabase.txt', 'r') as file:
lines = file.readlines()
将完整文件读入行,然后将其关闭(自动)
with open ('cropdatabase.txt', 'w') as file:
for row in lines:
if crop in row:
row = row.strip(), ", ", quantity
file.write(row)
您没有指定,因此我正在编写与crop匹配的行并在逗号后添加数量
else:
file.write(row)
试试这个,然后回头看看你看到的内容。首先将输入文件保存为其他名称,以便比较两个
答案 3 :(得分:-1)
首先你需要使用raw_input
crop = raw_input("Which crop? ")
quantity = raw_input("How many? ")
然后你不需要f.close(),因为你已经打开了。