【Python文件】python基本语法笔记(yi)

#文件和异常
###读取整个文件
首先在同一文件夹下准备两个文件,这里举例为pi_digits.txt文件和file_reader.py。在pi_dighits文件中存储着圆周率值,是我们将要打开的文件。另一个文件时存储打开文件程序的文件.
pi_digits.txt:
```txt
3.1415926535 
  8979323846 
  2643383279
  ```
file_reader.py:
```python
with open('pi_digits.txt') as file_object:
    contents = file_objects.read()
print(contents)   
 ```
 函数**open()** 接受一个参数,要打开的文件名称。python将在当前执行的文件(file_reader.py)所在的目录中查找pi_digits.txt,函数open()会返回一个表示文件的对象,这里python将该对象赋给file_object。
 关键字**with**在不需要访问文件后将文件关闭,这里我们为了让程序正常执行先不使用close()函数,python会自动关闭文件。
 有了表示pi_digits.txt的对象后,使用**read()**方法读取文件的全部内容,并将内容作为字符串传递给变量contents。
 但是,在使用read()方法后,输出文件内容时,会比原文件多出一空行,这是因为read()到达文件末尾时,返回一个空的字符串,现实出来就是一个空行,解决这个问题可以在print()中使用rstrip()
 ```python
 print(contents.restrip())
 ```
###文件路径
如果要python打开不与程序文件位于同一个目录下的文件,需要提供文件路径.假如说,当前执行的程序存储在A的文件夹下,在A的文件夹下还有一个B的子文件夹,在B中存储着filename.txt文件,这是需要为python指明文件路径。这样的文件路径我们称之为相对路径。
```python
 with open('text_files\filename.txt') as file_object:
```
**绝对路径**:
```python
file_path = '/home/ehmatthes/other_files/text_files/filename.txt'
with open(file_path) as file_object:
```
文件的绝对路径一般相对较长,可以将其先赋给一个变量,在传递给open()函数,使用绝对路径可以访问系统中的任何文件
**注意**:
>Windows系统之使用反斜杠要注意不于转义字符冲突,所以建议将路径中的每个反>>斜杠都进行转义,如“\\” 。
###逐行读取文件内容
```python
filename = 'pi_digits.txt'

with open(filename) as file_objects:
    for line in file_objects:
        print(line)
```
执行代码后输出内容显示每一行之间有更多的空格,可以在print()中使用rstrip()减少空格。
###创建一个包含文件各行的列表
```python
filename = 'pi_digits.txt'

with open(filename) as file_objects:
    lines = file_objects.readlines()

for line in lines:
    print(line.rstrip())
```    
>readlines()方法将会从文件中读取每一行,并将其存储在一个列表中去。
```python
filename = 'pi_digits.txt'
with open(filename) as file_objects:
    lines = file_objects.readlines()

pi_string = ''
for line in lines:
    pi_string += line.rstrip()

print(pi_string)
print(len(pi_string))
```
输出结果为:
```python
3.1415926535  8979323846  2643383279
36
```
输出结果中,每行字符串都包含了每行左边的空格,为了删除这些空格,使用strip()
解释:
>strip()可以删除字符串两边的空格,rstrip()可以删除右边的空格,lstrip()可以删除左边的空格
```python
filename = 'pi_digits.txt'
with open(filename) as file_objects:
    lines = file_objects.readlines()

pi_string = ''
for line in lines:
    pi_string += line.strip()

print(pi_string)
print(len(pi_string))
```
输出结果为:
```python
3.141592653589793238462643383279
32
```
**注意**:读取文本文件时,python将所有的文本文件都解读为字符串,如果需要数,使用int()转换。
###读取超大文件
如果需要读取的字符串文件过长,可使用切片操作限制读取位数
```python
print(pi_string[:50])
```
###查看生日是否在圆周率中
```python
path = 'pi_million_digits.txt'
with open(path) as file_object:
    lines = file_object.readlines()

pi_string = ''
for line in lines:
    pi_string += line.strip()

birthday = input("please input your birthday:")
if birthday in pi_string:
    print("Yes")
else:
    print("No")
```
###写入空文件
```python
path = 'pro.txt'
with open(path, 'w') as file_object:
    file_object.write("I love pro")
```
要打开一个文件并且写入内容,而不是将文件内容显示在屏幕上,需要给open()添加一个参数,告诉python我要写入一个文件,如上面的代码,添加了一个参数“w”.
打开文件时,有很多模式可以选择
>'r':读取模式
'w':写入模式
'a':附加模式
'x':独占写入模式
'b':二进制模式(与其他模式结合使用)
't':文本模式(默认值,与其他模式结合使用)
'+':读写模式(与其他模式结合使用)
>
1.'w'模式:写入文件让你能够写入文件,并且在文件不存在时创建文件。**如果文件已经存在,既有内容将被删除(截断(truncate)),从头开始写.**
2.'x'模式:新建一个文件写入,如果文件已经存在,则会引发FileExistsError错误。
3.'rt'模式:这意味着将把文件视为经过编码的Unicode文本,因此将自动执行解码和编码,且默认使用UTF-8编码。
4.'rb'模式:打开非文本的文件,禁用与文本有关的功能。
**下图引用自菜鸟教程**
![这是图片](https://www.runoob.com/wp-content/uploads/2013/11/2112205-861c05b2bdbc9c28.png "关系图")

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值