[New-bugs-announce] [issue31281] fileinput inplace does not work with pathlib.Path

Zhiming Wang report at bugs.python.org
Fri Aug 25 21:50:52 EDT 2017

New submission from Zhiming Wang:


    import fileinput
    import pathlib
    with fileinput.input(files=(pathlib.Path('in.txt'),), inplace=True) as fp:
        for line in fp:
            print(line, end='')

which results in

    Traceback (most recent call last):
      File "./pathlib-fileinput.py", line 6, in <module>
        for line in fp:
      File "/Users/zmwang/.pyenv/versions/3.6.1/lib/python3.6/fileinput.py", line 250, in __next__
        line = self._readline()
      File "/Users/zmwang/.pyenv/versions/3.6.1/lib/python3.6/fileinput.py", line 331, in _readline
        self._filename + (self._backup or ".bak"))
    TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'

A trivial fix is converting the specified filename to str when assigning to self._filename:

    -        self._filename = self._files[0]
    +        self._filename = str(self._files[0])

components: Library (Lib)
messages: 300860
nosy: zmwangx
priority: normal
severity: normal
status: open
title: fileinput inplace does not work with pathlib.Path
type: behavior
versions: Python 3.4, Python 3.5, Python 3.6, Python 3.7

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list