我正在尝试制作一个可以让玩家赚钱的文件,但是却试图用钱来更新该行。它将创建一个具有相同名称但带有“?”的新文件。最后。
Name = input("Username: ")
f = open((Name) + ".txt", "w")
global Money
Money = int(100)
lines = [(Name) + "\n", str(Money)]
f.writelines(lines)
f.close()
这是最初创建文件的地方
save = input("What is the file you'd like to refer to?")
f = open((save) + ".txt", "r")
Name = (f.readline())
Money = int(f.readline())
此代码段工作正常,并且已按预期将变量设置为所需的数据。 (在另一种情况下)
lines = [(Name) + "\n", str(Money)]
在上一个模块中,我将“行”定义为这些行。
global Name
Money = Money - 50
f = open((Name) + ".txt", "w")
f.writelines(lines)
f.close()
这是创建另一个文件的代码段,我只希望它更新文件,但它正在创建另一个文件。 (有时它什么也没做)
答案 0 :(得分:0)
问题在于文件名包含换行符('\n'
)。显示文件名时,ls
实用程序将使用问号替换此字符。
换行符来自以下代码:
save = input("What is the file you'd like to refer to?")
f = open((save) + ".txt", "r")
Name = (f.readline())
Money = int(f.readline())
f.readline
返回的行在该行的末尾包含换行符。
删除换行符最简单的方法是使用str.rstrip,如下所示:
Name = f.readline().rstrip('\n')
这也可以:
Name = f.readline().rstrip()
如果rstrip
没有传递参数,它将删除所有所有尾随空白字符。
文件中的“ Money”行没有尾随换行符,但是无论如何都应调用rstrip
,因为如果在文本编辑器中编辑文件,可能会添加一行,或是否在文件中添加了更多行。
在bash shell中,您可以通过将ls
的输出通过cat
或sed
(贷记到this comment)来“看到”换行符:
> ls test*.txt
test?.txt
> ls test*.txt | cat
test
.txt
> ls test*.txt | sed -n l
test$
.txt$