【问题标题】:How can i fix TypeError: unsupported operand type(s) for +: 'WindowsPath' and 'str'如何修复 TypeError:+ 不支持的操作数类型:'WindowsPath' 和 'str'
【发布时间】:2021-09-15 12:19:04
【问题描述】:

你好,所以我正在使用 python 并想向文本文件写入一些内容,但它不起作用...... 我的代码的错误部分:

working_directory = Path(__file__).absolute().parent
profilename1 = Banana
getProductFile = (working_directory + profilename1+".txt")
with open(getProductFile, 'a') as f:
    print('\n'.join(list), file=f)
    print('\n'.join(list1), file=f)

当我运行它时,我得到了这个错误:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\yvesb\OneDrive\Desktop\Script\SATURN.py", line 177, in getLogin
    linkopen()
  File "C:\Users\yvesb\OneDrive\Desktop\Script\SATURN.py", line 204, in linkopen
    getProduct()
  File "C:\Users\yvesb\OneDrive\Desktop\Script\SATURN.py", line 265, in getProduct
    getProductFile = (working_directory + profilename1+".txt")
TypeError: unsupported operand type(s) for +: 'WindowsPath' and 'str'

我该如何解决?

【问题讨论】:

    标签: python file txt write


    【解决方案1】:

    您必须将路径与/ 而不是+ 结合起来:

    working_directory = Path(__file__).absolute().parent
    profilename1 = Banana
    product_file = working_directory / (profilename1 + ".txt")
    with product_file.open('a') as output:
        print('\n'.join(list), file=output)
        print('\n'.join(list1), file=output)
    

    【讨论】:

      【解决方案2】:

      使用Path.joinpathos.path.join 代替字符串连接

      getProductFile = Path.joinpath(working_directory, profilename1 + ".txt")
      getProductFile = os.path.join(working_directory, profilename1 + ".txt")
      

      【讨论】:

        【解决方案3】:

        有两种方法可以连接pathlib.Path 之外的新路径部分,方法或覆盖的/

        getProductFile = working_directory.joinpath(profilename1 + ".txt")
        getProductFile = working_directory / (profilename1 + ".txt")
        

        然后你在with 块中重新定义f,它应该更像

        with open(getProductFile, 'a') as f:
            print('\n'.join(list), file=f)
            print('\n'.join(list1), file=f)
        

        【讨论】:

          猜你喜欢
          • 2020-05-09
          • 1970-01-01
          • 2013-02-08
          • 2013-02-20
          • 2018-12-06
          • 1970-01-01
          • 2016-06-13
          • 2021-01-03
          相关资源
          最近更新 更多