首页 > 解决方案 > TypeError: write() 参数必须是 str,而不是 int 问题

问题描述

我是使用 Python 编程的新手,我遇到了这个代码块的问题,它给了我一个类型错误?我正在尝试制作一个程序,用户可以将零件输入到一个warehouse.txt 文件中。

这是菜单:

    def warehouse_menu():
        print ("Options")
    
        choice = int(input("Enter choice: "))
        while choice != 5:
            try:
                if choice == 1:
                    whsparts_write()
                elif choice == 3:
                    whsparts_print()
                elif choice == 4:
                    whsparts_search()
                elif choice == 5:
                    print ("Thanks for using A.P.I.M.S.") 

第一个选择:

    def whsparts_write():
        print ("More options about where to write the .txt file")
        warehouse_choice = int(input("Input here: "))
        if warehouse_choice == 1:
            tdw()
        elif warehouse_choice == 2:
            ddw()
        elif warehouse_choice == 3:
            sjw()
def warehouse_parts():
    idnumber = 0
    whsparts_masterlist = []
    for a in range (1):
        whsparts_list = []
        assembly_section = input("Which assembly section: ")
        whsparts_list.append (assembly_section)

        carpart = input("Enter car part: ")
        whsparts_list.append (carpart)

        quantity = input("Enter quantity: ")
        whsparts_list.append (quantity)

        idnumber += 1
        whsparts_list.append (idnumber)
        whsparts_masterlist.append (whsparts_list)
    return whsparts_masterlist

这是错误消息说它正在发生的地方:

def tdw():
    fileHandler = open ('warehouse_parts (TDW).txt', 'w')
    whsparts_masterlist = warehouse_parts()

    for whsparts_list in whsparts_masterlist:
        for b in whsparts_list:
            fileHandler.write(b)
            fileHandler.write('\t')
        fileHandler.write('\n')
    fileHandler.close()

和错误信息:

    Traceback (most recent call last):
      File "apims.py", line 83, in <module>
        print (warehouse_menu())
      File "apims.py", line 71, in warehouse_menu
        whsparts_write()
      File "apims.py", line 35, in whsparts_write
        tdw()
      File "apims.py", line 26, in tdw
        fileHandler.write(b)
    TypeError: write() argument must be str, not int

标签: pythontypeerror

解决方案


您需要将 b 转换为字符串,然后再使用

str(b)

那么函数可以写成:

def tdw():

fileHandler = open ('warehouse_parts (TDW).txt', 'w')
whsparts_masterlist = warehouse_parts()

for whsparts_list in whsparts_masterlist:
    for b in whsparts_list:
        str(b)
        fileHandler.write(b)
        fileHandler.write('\t')

    fileHandler.write('\n')
fileHandler.close()

编辑:为了在文件上写一些东西,输入应该总是先转换为字符串,然后才能写在文件上,否则你总是会收到这个错误。TypeError: write() argument must be str, not int


推荐阅读