本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008
全文介绍系统内置 fileinput 模块、函数、类及类的方法和属性。
它通过代码抓取并经AI智能翻译和人工校对。
是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】
无。(单一模块,过于简单。)
◆object
fileinput.FileInput
fileinput, fullname=fileinput, file=fileinput.py
Helper类快速编写遍历所有标准输入文件的循环。
典型的用法是:
import fileinput
for line in fileinput.input():
process(line)
这将遍历 sys.argv[1:] 中列出的所有文件的行,如果列表为空,则默认为sys.stdin。
如果一个文件名是'-',它也会被sys.stdin代替,可选参数mode和openhook将被忽略。
要指定一个可供选择的文件名列表,将其作为参数传递给input()。
也允许使用单个文件名。
函数filename(), lineno()返回刚刚读取的行的文件名和累计行号;
filelineno()返回当前文件中的行号;
isfirstline()如果刚刚读取的行是其文件的第一行,则返回true;
isstdin() 如果是从sys.stdin读取的,则返回true。
函数nextfile()关闭当前文件,以便下一次迭代从下一个文件(如果有)中读取第一行;
未从文件中读取的行将不计入累积行数;直到读取下一个文件的第一行之后才更改文件名。
函数close()关闭序列。
在读取任何行之前,filename()返回None,并且两个行号都为零; nextfile()没有效果。
读取所有行后,filename()和行号函数返回与最后读取的行相关的值;nextfile()没有效果。
默认情况下,所有文件都以文本模式打开,您可以通过将模式参数设置为 input() 或 FileInput.__init__() 来覆盖这一点。
如果在打开或读取文件时发生I/O错误,将引发OSError异常。
如果 sys.stdin 被使用多次,第二次和进一步的使用将不会返回任何行,除非可能是交互使用,或者如果它已经显式重置(例如使用sys.stdin.seek(0))。
打开并立即关闭空文件;只有当最后打开的文件为空时,才会注意到它们在文件名列表中的存在。
文件的最后一行可能不是换行符;否则返回包括末尾换行符在内的行。
类FileInput是实现;它的方法filename(), lineno(), fileline(), isfirstline(), isstdin(), nextfile()和close()对应于模块中的函数。
此外,它还有一个readline()方法,用于返回下一个输入行,还有一个 __getitem__() 方法,用于实现序列行为。
序列必须严格按顺序访问;序列访问和readline()不能混合使用。
可选就地过滤:如果关键字参数inplace=1被传递给input()或FileInput构造函数,则文件被移动到备份文件,标准输出被定向到输入文件。
这样就可以编写一个过滤器,在适当的位置重写其输入文件。如果关键字参数 backup="." 也被给出,
它指定了备份文件的扩展名,并且备份文件保持不变;默认情况下,扩展名为“.bak”,当输出文件关闭时,它将被删除。在读取标准输入时禁用就地过滤。
(注:XXX 不适用于MS-DOS 8+3文件系统。)
XXX 可能的补充:
- 可选的 getopt 参数处理
- isatty()
- read(), read(size), 甚至 readlines()
序号 | 类别 | 数量 |
---|---|---|
4 | str | 5 |
6 | list | 1 |
8 | dict | 1 |
9 | module | 2 |
10 | class | 1 |
11 | function | 12 |
13 | residual | 3 |
14 | system | 9 |
15 | private | 2 |
16 | all | 25 |
sys, fullname=sys, file=
os, fullname=os, file=os.py
input(files=None, inplace=False, backup=‘’, bufsize=0, mode=‘r’, openhook=None)
module=fileinput, line:83 at fileinput.py
返回 FileInput 类的一个实例,该实例可以迭代。
参数被传递给FileInput类的构造函数。
返回的实例除了作为迭代器外,还为该模块的函数保留全局状态。
close(), module=fileinput, line:97 at fileinput.py
关闭序列。
nextfile(), module=fileinput, line:105 at fileinput.py
关闭当前文件,以便下一次迭代将从下一个文件(如果有的话)读取第一行;未从文件中读取的行将不计入累积行数。
直到读取下一个文件的第一行之后才更改文件名。
在读取第一行之前,该函数没有作用;它不能用于跳过第一个文件。
在最后一个文件的最后一行被读取之后,这个函数就不起作用了。
filename(), module=fileinput, line:119 at fileinput.py
返回当前正在读取的文件的名称。在第一行被读取之前,返回None。
lineno(), module=fileinput, line:128 at fileinput.py
返回刚刚读取的行的累积行号。在读取第一行之前,返回0。读取最后一个文件的最后一行后,返回该行的行号。
filelineno(), module=fileinput, line:138 at fileinput.py
返回当前文件中的行号。在读取第一行之前,返回0。读取最后一个文件的最后一行后,返回文件中该行的行号。
fileno(), module=fileinput, line:148 at fileinput.py
返回当前文件的文件号。当当前没有文件打开时,返回-1。
isfirstline(), module=fileinput, line:157 at fileinput.py
如果刚刚读取的行是文件的第一行,则返回true,否则返回false。
isstdin(), module=fileinput, line:166 at fileinput.py
如果最后一行是从sys.stdin,否则返回false。
hook_compressed(filename, mode), module=fileinput, line:393 at fileinput.py
hook_encoded(encoding, errors=None), module=fileinput, line:405 at fileinput.py
_test(), module=fileinput, line:411 at fileinput.py
FileInput, fileinput.FileInput, module=fileinput
FileInput([files[, inplace[, backup[, bufsize, [, mode[, openhook]]]]]])
类FileInput是模块的实现;
它的方法filename(), lineno(), fileline(), isfirstline(), isstdin(), fileno(), nextfile()和close()对应于模块中同名的函数。
此外,它还有一个readline()方法,用于返回下一个输入行,还有一个 __getitem__() 方法,用于实现序列行为。
序列必须严格按顺序访问; 随机访问和readline()不能混合使用。
1 close(self)
kind=method class=FileInput objtype=function line:235 at …\fileinput.py
2 filelineno(self)
kind=method class=FileInput objtype=function line:374 at …\fileinput.py
3 filename(self)
kind=method class=FileInput objtype=function line:368 at …\fileinput.py
4 fileno(self)
kind=method class=FileInput objtype=function line:377 at …\fileinput.py
5 isfirstline(self)
kind=method class=FileInput objtype=function line:386 at …\fileinput.py
6 isstdin(self)
kind=method class=FileInput objtype=function line:389 at …\fileinput.py
7 lineno(self)
kind=method class=FileInput objtype=function line:371 at …\fileinput.py
8 nextfile(self)
kind=method class=FileInput objtype=function line:269 at …\fileinput.py
9 readline(self)
kind=method class=FileInput objtype=function line:299 at …\fileinput.py
16 _state None
17 _test
18 loader <_frozen_importlib_external.SourceFileLoader object at 0x00000000038AAB48>
19 spec ModuleSpec(name=‘fileinput’, loader=<_frozen_importlib_external.SourceFileLoader object at 0x00000000038AAB48>, origin=‘D:\ProgramFiles\Python\Python37\lib\fileinput.py’)
20 _state None
31 breakpointhook
32 callstats
33 _clear_type_cache
34 _current_frames
35 displayhook
36 exc_info
37 excepthook
38 exit
39 getdefaultencoding
40 getallocatedblocks
41 getfilesystemencoding
42 getfilesystemencodeerrors
43 getrefcount
44 getrecursionlimit
45 getsizeof
46 _getframe
47 getwindowsversion
48 _enablelegacywindowsfsencoding
49 intern
50 is_finalizing
51 setcheckinterval
52 getcheckinterval
53 setswitchinterval
54 getswitchinterval
55 setprofile
56 getprofile
57 setrecursionlimit
58 settrace
59 gettrace
60 call_tracing
61 _debugmallocstats
62 set_coroutine_origin_tracking_depth
63 get_coroutine_origin_tracking_depth
64 set_coroutine_wrapper
65 get_coroutine_wrapper
66 set_asyncgen_hooks
67 get_asyncgen_hooks
68 displayhook
69 excepthook
70 breakpointhook
71 _clear_type_cache
72 _current_frames
73 _getframe
74 _enablelegacywindowsfsencoding
75 _debugmallocstats
76 _git (‘CPython’, ‘tags/v3.7.8’, ‘4b47a5b6ba’)
77 _framework
78 _base_executable D:\ProgramFiles\Python\Python37\python.exe
79 _xoptions {}
80 _home D:\ProgramFiles\Python\Python37
81 spec ModuleSpec(name=‘sys’, loader=
)
82 float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
83 int_info sys.int_info(bits_per_digit=30, sizeof_digit=4)
84 hash_info sys.hash_info(width=64, modulus=2305843009213693951, inf=314159, nan=0, imag=1000003, algorithm=‘siphash24’, hash_bits=64, seed_bits=128, cutoff=0)
85 version_info sys.version_info(major=3, minor=7, micro=8, releaselevel=‘final’, serial=0)
86 implementation namespace(cache_tag=‘cpython-37’, hexversion=50792688, name=‘cpython’, version=sys.version_info(major=3, minor=7, micro=8, releaselevel=‘final’, serial=0))
87 flags sys.flags(debug=0, inspect=0, interactive=0, optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0, ignore_environment=0, verbose=0, bytes_warning=0, quiet=0, hash_randomization=1, isolated=0, dev_mode=False, utf8_mode=0)
88 thread_info sys.thread_info(name=‘nt’, lock=None, version=None)
89 stderr <_io.TextIOWrapper name=‘’ mode=‘w’ encoding=‘GBK’>
90 stderr <_io.TextIOWrapper name=‘’ mode=‘w’ encoding=‘GBK’>
91 stdin <_io.TextIOWrapper name=‘’ mode=‘r’ encoding=‘GBK’>
92 stdin <_io.TextIOWrapper name=‘’ mode=‘r’ encoding=‘GBK’>
93 stdout <_io.TextIOWrapper name=‘’ mode=‘w’ encoding=‘GBK’>
94 stdout <_io.TextIOWrapper name=‘’ mode=‘w’ encoding=‘GBK’>
略。
142 _check_methods
143 _exists
144 _get_exports_list
145 _exit
146 _execvpe
147 _Environ
148 _putenv
149 _unsetenv
150 _wrap_close
151 _fspath
152 loader <_frozen_importlib_external.SourceFileLoader object at 0x0000000002216CC8>
153 spec ModuleSpec(…)
154 environ environ({…})
系统自带的 测试函数。一并附在这里吧。
def _test():
import getopt
inplace = False
backup = False
opts, args = getopt.getopt(sys.argv[1:], "ib:")
for o, a in opts:
if o == '-i': inplace = True
if o == '-b': backup = a
for line in input(args, inplace=inplace, backup=backup):
if line[-1:] == '\n': line = line[:-1]
if line[-1:] == '\r': line = line[:-1]
print("%d: %s[%d]%s %s" % (lineno(), filename(), filelineno(),
isfirstline() and "*" or "", line))
print("%d: %s[%d]" % (lineno(), filename(), filelineno()))