簡體   English   中英

Python的fileinput如何接受輸入

[英]How does Python's fileinput accept input

我想知道fileinput.input()如何接受交互式輸入。

我在以下位置查看了代碼-https: //github.com/python/cpython/blob/master/Lib/fileinput.py

這是內部行讀取器的外觀:

def _readline(self):
    if not self._files:
        if 'b' in self._mode:
            return b''
        else:
            return ''
    self._filename = self._files[0]
    self._files = self._files[1:]
    self._startlineno = self.lineno()
    self._filelineno = 0
    self._file = None
    self._isstdin = False
    self._backupfilename = 0
    if self._filename == '-':
        self._filename = '<stdin>'
        if 'b' in self._mode:
            self._file = getattr(sys.stdin, 'buffer', sys.stdin)
        else:
            self._file = sys.stdin
        self._isstdin = True
    else:
        if self._inplace:
            self._backupfilename = (
                os.fspath(self._filename) + (self._backup or ".bak"))
            try:
                os.unlink(self._backupfilename)
            except OSError:
                pass
            # The next few lines may raise OSError
            os.rename(self._filename, self._backupfilename)
            self._file = open(self._backupfilename, self._mode)
            try:
                perm = os.fstat(self._file.fileno()).st_mode
            except OSError:
                self._output = open(self._filename, "w")
            else:
                mode = os.O_CREAT | os.O_WRONLY | os.O_TRUNC
                if hasattr(os, 'O_BINARY'):
                    mode |= os.O_BINARY

                fd = os.open(self._filename, mode, perm)
                self._output = os.fdopen(fd, "w")
                try:
                    if hasattr(os, 'chmod'):
                        os.chmod(self._filename, perm)
                except OSError:
                    pass
            self._savestdout = sys.stdout
            sys.stdout = self._output
        else:
            # This may raise OSError
            if self._openhook:
                self._file = self._openhook(self._filename, self._mode)
            else:
                self._file = open(self._filename, self._mode)
    self._readline = self._file.readline  # hide FileInput._readline
    return self._readline()

我不確定該怎么做,也很想知道在這里實際上是如何處理交互式輸入的,因為我看不到對內置input()調用。

實際在fileinput.input()生成用戶提示的是什么?

當不提供任何參數時,它將調用sys.stdin.readline方法。 如果未提供任何參數,則_readline方法如下所示。

def _readline(self):
        if self._filename == '-': # when no `files` parameter is supplied `self._filename` will be `-`
                self._file = sys.stdin
        self._readline = self._file.readline  # hide FileInput._readline
        return self._readline() # invoke the sys.stdin.readline()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM