文件和异常

读取文件

读取整个文件

# 文件的名称需要注意
with open('pi_digits.txt') as file_object:
    contents = file_object.read()
    print(contents)
    print(contents.rstrip()) # rstrip()函数删除read()函数返回的空字符串,即空行

# 函数open()接受一个参数:要打开的文件的名称
# 函数open()返回的是一个对象
# Python在代码所在的目录查看文件
# 关键词with在不需要文件的时候将其关闭
# 可以调用open()和close()来打开和关闭文件,但是这样做,如果程序存在BUG,导致close()语句未执行,文件将不会关闭

文件路径

绝对路径:从根目录开始的路径

相对路径:从当前位置开始的路径

绝对路径通常长于相对路径

# 程序文件存储在文件夹python_work中,而在文件夹python_work中,有一个名为text_files的文件夹
# 用于存储程序文件操作的文本文件。虽然text_files包含在文件夹python_work中
# 但仅向open()传递位于该文件夹中的文件的名称也不可行
# 因为Python只能在文件夹python_work中查找,而不会在其子文件夹text_files中查找。
# 要让Python打开程序文件位于同一个目录中的文件,需要提供文件路径
# Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/)【Linux和OS X】
with open('text_files\filename.txt') as file_object:

逐行读取

with open(filename) as file_object:
    for line in file_object:
        print(line.rstrip())
# 将读取的文件名称存储在变量filename当中
# 函数rstrip()消除多余的空行

创建一个包含文件各行内容的列表

方法readlines()从文件中读取每一行,并将其存储到列表lines

filename = 'pi_digits.txt'

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

print(lines)  #直接输出列表lines

#通过循环输出列表lines使其与文件格式一致
for line in lines:   
    print(line.rstrip())

使用文件中的内容

filename = 'pi_digits.txt'

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

pi_String = ''
for line in lines:
    pi_String += line.rstrip()  #rstrip删除列表后面的空行
print(pi_String)
print(len(pi_String))

#在变量pi_String存储的字符串当中,包含原来每行位于左边的空格
# 为了删除这些空格,可将strip代替rstrip

for line in lines:
    pi_String += line.strip()
print(pi_String)
print(len(pi_String))
查看圆周率是否包含自己的生日
filename = 'pi_million_digits.txt'  
# pi_million_digits.txt文件包含圆周率前1 000 000

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

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

birthday = input("Enter your birthday, in the from mmddyy: ")
if birthday in pi_String:   
    #这里使用if判断birthda是否包含在pi_String当中
    print("Your birthday appears in the form million digits of pi!")
else:
    print("You birthday does not appera in the first million digits of pi: ")

写入文件

写入空文件

filename = 'programming.txt'

with open(filename,'w') as file_object:
    file_object.write("I love programming.")
    
# open()函数包含两个实参
# 第一个是要打开的文件的名称,如果没有这个文件将创建这个文件
# 第二个实参w表示以写入模式打开这个文件
# 读取模式:r 写入模式:w 附加模式:a  读写模式:r+
# 如果忽略第二个参数,Python默认以只读模式打开文件
#方法write将字符串写入文件
写入多行

可以使用空格,制表符,空行来设置这些输出的格式

附加到文件

如果你要给文件添加内容,而不是覆盖原有的内容,可以使用附件模式(a)打开文件
使用附件模式打开文件,Python不会返回文件对象前清空文件
所以写入的文件内容都将添加到文件末尾
如果文件不存在,就创建该文件

异常

处理ZeroDivisionError异常
# 使用try-except代码块
# 程序首先运行try中的代码,如果没问题就将跳过except代码块
# 如果try代码块运行错误,程序将运行except中的代码块
# 以下示例中:try代码块引发了ZeroDivisionError异常

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")
try-except-else代码块
# try-except-else代码块的工作原理:
# Python尝试执行try代码块中的代码;只要可能引发异常的代码才需要放在try语句中

print("Give me two numbers,and I'll divide them.")
print("Enter 'q' to quit")

while True:
    first_number = input("\nFirst number:")
    if first_number == 'q':
        break
    second_number = input("Second number")
    try:
        answer = int(first_number)/int(second_number)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)

处理FileNotFoundError异常

查找不到文件的时候,可以使用try-except代码块以直观的方式处理

try:
    with open(filename) as f_obj:
        conterts = f_obj.read()
except FileNotFoundError:
    msg = "Sorry,the file "+filename+ " does not exist."
    print(msg)
# 最终显示一条友好的错误信息,而不是traceback

分析文本

方法split()以空格为分隔符将字符串分拆成多个部分

PASS

Python中有个pass语句,可在代码块中使用它来让Python什么都不做

你可能感兴趣的:(Python,python,linux,爬虫)