黑马程序员技术交流社区

标题: 【上海校区】 Python之输入输出 [打印本页]

作者: 不二晨    时间: 2018-11-19 10:01
标题: 【上海校区】 Python之输入输出
1. print与input

print的基本用法

print()是python的基本输出函数,它有着非常灵活的使用方法,下面通过help()查看print的基本用法,在交互编辑界面输入help(print)

>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
1
2
3
4
5
6
7
8
9
10
11
12
可以看到,print的参数为以下几项:

value, …:要打印的值, 以逗号分隔。
sep:分隔符,默认以空格分隔(打印的每项之间以空格分开)。
end:结束符, 默认为换行符(print默认会换行)。
file:打印的目的对象,默认为标准输出(可以改为其他的类似文件的对象)。
flush:是否立即输出到file指定的流对象中。
(1) 数据类型
value可以是不同的数据类型,通过逗号将各数据项分开。

>>> print("Hello World!", "2018/11/18", 3.14)
Hello World! 2018/11/18 3.14
1
2
(2) 更改分隔符
从上一个例子可以看出,输出的各项以空格进行分隔。更改seq值可以更改分隔符类型,如下:

>>> print("Hello World!", "2018/11/18", 3.14, sep='#')
Hello World!#2018/11/18#3.14
1
2
(3) 更改结束符
下面这个例子:

>>> print("Hello World!")
... print("Hello World!")
Hello World!
Hello World!
1
2
3
4
可以看出,print默认以换行符结束。这里可以通过更改end值更改结束符,如下:

>>> print("Hello World!", end=' ')
... print("Hello World!", end=' ')
Hello World! Hello World!
1
2
3
(4) 更改输出位置
print默认输出到标准输出,我们可以通过file参数来更改输出,如下:

f=open("out.txt", "w")
print("Hello World!", file=f)
f.close()
1
2
3
这里更改输出为out.txt,打开out.txt文件可以看到里面的内容为Hello World!.
值得注意的是,print是不会立即输出到out.txt文件中的,它将要打印的数据保留再缓冲区,当执行到f.close()时才将数据写入文件中。如果需要立即打印到文件中,将flush参数改为true即可。

input的基本用法

同样的,我们先通过help命令查看input的用法,在交互编辑界面输入help(input),得到如下结果:

>>> help(input)
Help on built-in function input in module builtins:

input(prompt=None, /)
    Read a string from standard input.  The trailing newline is stripped.

    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.

    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.

1
2
3
4
5
6
7
8
9
10
11
12
可以看出,input从标准输入读取一个字符串,并去掉最后的换行符。此外,input的prompt参数可同于打印提示信息。注意这里读取的任何内容都会被转换为字符串。

>>> a=input("Input:")
Input:Hello World!
>>> type(a)
<class 'str'>
>>> b=input("Input:")
Input:123
>>> type(b)
<class 'str'>
1
2
3
4
5
6
7
8
如果需要读取整数,利用int进行强制转换即可:

>>> c=int(input("Input:"))
Input:123
>>> type(c)
<class 'int'>
1
2
3
4
小结

1. print可以打印不同的数据类型,且不需要指定数据类型。
2. print输出时各项之间默认以空格分隔,以换行符结尾,可以通过sep和end参数更改。
3. print默认输出到标准输出,可通过file参数更改。
4. Input将读取的数据转换为字符串。

2. 文件读写操作

打开关闭文件

打开文件的函数为open(),利用help可查看其用法,由于介绍过长,下面仅贴出一部分:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    Open file and return a stream.  Raise IOError upon failure.
1
2
从介绍可以看出,open()的作用是打开文件,返回一个流对象,如果失败则抛出错误。参数的意义如下:
[file] 文件对象,文本文件或者是二进制文件。
[mode] 打开模式(读、写、追加、文本文件、二进制文件等),默认为"读文本"。
[encoding] 编码方式,默认值与平台无关。
[errors] 指定编码错误的处理方式。
[newline] 设置换行的方式(None、’\n’、’\r’和’\r\n’)
其中,mode的取值如下:

Character        Meaning-
‘r’        读 (默认)
‘w’        写
‘x’        新建文件,写
‘a’        在文件末尾追加
‘b’        二进制模式
‘t’        文本模式(默认)
‘+’        读写(不单独存在)
‘U’        通用换行符
可通过上述的组合实现不同的模式,如rb(二进制读)、w+(读写)等。
注意:**利用open()打开文件之后需要用f.close()关闭文件。**也可以使用如下方式打开文件,则不需要手动关闭文件:

with open("data.txt") as f:
        pass
1
2
读文件

f.read
f.read用于读取文件中指定字节数的数据,如果不指定字节数,则默认读取文件中所有内容。

with open("data.txt") as f:
    print(f.read())
1
2
Line one: Hello World!
Line two: Hello World!
Line three: Hello World!
Line four: Hello World!
1
2
3
4
f.readline
f.readline用于读取文件中的一行。

with open("data.txt") as f:
    print(f.readline())
1
2
Line one: Hello World!
1
f.readlines
f.readline用于读取文件中所有行。默认返回为所有行构成的list。

with open("data.txt") as f:
    ret = f.readlines()
    print(type(ret))
    print(ret)
1
2
3
4
<class 'list'>
['Line one: Hello World!\n', 'Line two: Hello World!\n', 'Line three: Hello World!\n', 'Line four: Hello World!']
1
2
此外,还可以通过迭代对象来读取所有行。

with open("data.txt") as f:
    for line in f:
        print(line, end='')
1
2
3
Line one: Hello World!
Line two: Hello World!
Line three: Hello World!
Line four: Hello World!
1
2
3
4
写文件

f.write
f.write用于将字符串写入到文件中,返回写入的字节数。

with open("data.txt", "w") as f:
    print(f.write("Hello World!"))
1
2
12
1
其他文件操作

f.tell
f.tell用于返回文件指针当前的位置(距离文件起始位置的字节数)

with open("data.txt", "r") as f:
    f.read(5)
    print(f.tell())
1
2
3
5
1
f.seek
f.seek用于移动文件指针到指定的位置。用法如下:

seek(cookie, whence=0, /) method of _io.TextIOWrapper instance
    Change stream position.

    Change the stream position to the given byte offset. The offset is
    interpreted relative to the position indicated by whence.  Values
    for whence are:

    * 0 -- start of stream (the default); offset should be zero or positive
    * 1 -- current stream position; offset may be negative
    * 2 -- end of stream; offset is usually negative
1
2
3
4
5
6
7
8
9
10
它有两个参数,第一个是偏移量cookie,第二个是起始位置whence。起始位置可以是文件起始位置(0)、当前位置(1), 文件尾(2)。
例子如下:

with open("data.txt", "r") as f:
    f.seek(5)//移动到位置5
    print(f.read())//读取所有内容
1
2
3
World!
---------------------
【转载】
作者:WavenZ
原文:https://blog.csdn.net/weixin_43374723/article/details/84196461



作者: 梦缠绕的时候    时间: 2018-11-20 15:53

作者: 小影姐姐    时间: 2018-11-21 16:33

作者: 不二晨    时间: 2018-11-21 17:00

作者: 魔都黑马少年梦    时间: 2018-11-22 16:52





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2