尝试将float写入.file()到数据文件。

时间:2018-12-05 06:33:00

标签: python python-3.x

def filewrite():
    filew = open('company.dat', 'a')
    custid = str(input('Enter Customer ID:'))
    Widg = abs(float(input('Quantity of Widgets Ordered:')))
    Gidg = abs(float(input('Quantity of Gidgets Ordered:')))
    Dood = abs(float(input('Quantity of Doodads Ordered:')))
    filew.write('\n')
    filew.write(custid)
    filew.write(Widg)
    filew.write(Gidg)
    filew.write(Dood)
    filew.close()

def fileread():
    filer = open('company.dat', 'r')
    read = filer.read()
    file.close()
    print(read, end='')

again = True

while again == True:
    print('1 - Add a new Invoice Order')
    print('2 - Display all Invoice Orders')
    print('3 - Quit')

    choice = abs(int(input('Enter 1, 2, or 3:')))

    if choice > 3:
        print('Error, no choice of such available.')
        choice = abs(int(input('Enter 1, 2, or 3:')))

    if choice == 1:
        filewrite()
        print('\n')

我想将浮点数写入数据文件,但不会让我(write()参数必须为str,而不是浮点数)。有什么办法可以将浮点数写入数据文件,还是必须先将其写为str然后将其转换为浮点数

2 个答案:

答案 0 :(得分:1)

您可以在写入文件时将其转换为字符串。为了提高可读性,您应该在其后附加一个\n

filew.write(str(Widg) + '\n')
filew.write(str(Gidg) + '\n')
filew.write(str(Dood) + '\n')

此外,当有人输入Quit时,您也没有为3编写的代码。这样的事情应该起作用:

if choice == 3:
        break

我使用上述更改运行了您的代码,效果很好。这是它产生的文件:

mayankp@mayank:~/$ cat company.dat 

123445
12134
12310.0
1210.010.010.0
999910.0
10.0
10.0

答案 1 :(得分:0)

好吧,您这里没有其他选择。 write()函数仅接受字符串值,因此您必须在写入之前和检索数据值之后进行必要的转换。您可以使用格式功能来更好地控制要存储值的格式。例如:

number = 1
filew.write('{:04d}\n'.format(number))  # 0001 output \n if you want to store on new line