Python open()函数用法详解

一、文件操作的流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件
    具体步骤如下:
f=open('test.txt',encoding='utf-8')   #打开文件
data=f.read()            #文件操作
print(data)
f.close()          #关闭文件

二、open()函数的具体用法:

open函数最常用的使用方法如下:文件句柄 = open(‘文件路径’, ‘模式’,编码方式)。

1、关于文件路径

#文件路径:主要有两种,一种是使用相对路径,想上面的例子就是使用相对路径。
#另外一种就是绝对路径,像' C:/Users/shu/Desktop/python/test.txt'

2、关于打开模式:

# r    以只读方式打开文件。这是默认模式。文件必须存在,不存在抛出错误
#rb    以二进制格式打开一个文件用于只读。
#r+    打开一个文件用于读写。文件指针将会放在文件的开头。读完就追加。
#w    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#w+    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
#a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。注:后面有带b的方式,不需要考虑编码方式。有带+号的,则可读可写,不过它们之间还是有区别的

下面附上各种方法的代码,便于更深刻理解各种模式:

原来文件内容是:
自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.

1.只读模式r:

f=open('test.txt','r')
data=f.read()
print(data)           #自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
f.close() 

2.只写模式,w (存在会覆盖原来内容)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
f=open('test.txt','w')
f.write('作者:仓央嘉措')
f.close()              #写完后原来的内容全都不见了,只剩下'作者:仓央嘉措'.

3、追加模式,a

f=open('test.txt','a')
f.write('作者:仓央嘉措')
f.close()              #写完内容如下:自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.作者:仓央嘉措

4、以r+模式打开

f=open('test.txt','r+')
f.write('作者:仓央嘉措')
print(f.read())         # 输出为" ,入山又怕误倾城.世间安得双全法,不负如来不负卿."         
f.close()            
#写完内容为 “ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”
#为什么输出和写完内容会这样呢? 解释这个只要知道紧跟光标的位置就可以明白了。

首先,以r方式打开光标都会在最开始的位置,这时候执行f.write(‘作者:仓央嘉措’) ,这时候就把原来的‘自恐多情损梵行’覆盖了。
这时候光标移动到’,'之前,紧接着进行print(f.read())。就会把后面剩下的文本内容打印出来。所以输出就是:" ,入山又怕误倾城.世间安得双全法,不负如来不负卿." 整个程序完成后,整个文本内容就成了;“ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”(光标!!)

3、关于编码方式:

  • win系统默认是gbk编码的,所以桌面生成的TXT之类的都是gbk编码的。
  • 出现乱码正常都是原文件的编码方式和打开指定的编码不一致所致

三、关闭文件:

不要小看这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()

with open('test.txt','a+') as f:
    f.write('作者:仓央嘉措')
    print(f.read())
### 连接 Oracle 数据库的方法 在 Windows 的命令提示符 (CMD) 中,可以通过 SQL*Plus 工具连接到 Oracle 数据库。以下是具体方法及相关说明: #### 使用 SQL*Plus 登录 Oracle 数据库 要在 CMD 中启动 SQL*Plus 并连接到 Oracle 数据库,可以按照以下方式操作: 1. **打开 CMD**:点击“开始”,输入 `cmd` 并回车。 2. **运行 SQL*Plus**:在 CMD 中键入 `sqlplus` 命令来启动 SQL*Plus 客户端[^2]。 如果安装路径未被加入环境变量,则需指定完整的路径才能执行该工具。例如: ```bash "C:\app\username\product\11.2.0\dbhome_1\bin\sqlplus.exe" ``` 3. **提供用户名和密码**:当 SQL*Plus 启动后,会请求用户输入其凭证信息。此时可手动输入用户名、密码以及目标数据库的服务名称或 SID(如适用)。或者可以直接通过单条命令完成登录过程,如下所示: ```bash sqlplus username/password@ORCL ``` 这里,“username” 是您的账户名; “password” 对应的是相应用户的密钥字符串;而 "@ORCL" 表明要访问的目标实例名为 ORCL 的远程服务器地址[^3]。 对于更复杂的网络配置情况下的 TNS 配置文件定义好的别名也可以这样调用。 #### 自定义显示设置 一旦成功进入交互模式之后,还可以进一步调整查询结果显示样式等内容。比如修改某些字段的标签文字以便于阅读理解数据表结构等细节部分。这可通过 COLUMN 指令实现自定义列标题功能[^4]: ```sql COLUMN employee_id HEADING 'Emp ID' ``` 上述语句的作用在于把原始输出中的 "employee_id" 替换成为更加简洁直观的新表述形式即 "Emp ID". --- ### 提供一段 Python 脚本用于自动化处理常见任务 下面给出了一段简单的 python 程序作为例子展示如何利用 cx_oracle 库建立与 oracle dbms之间的联系从而简化重复性的管理工作流程: ```python import cx_Oracle dsn_tns = cx_Oracle.makedsn('hostname', port, service_name='service') connection = None try: connection = cx_Oracle.connect(user="your_username", password="your_password", dsn=dsn_tns) cursor = connection.cursor() sql_query = """SELECT * FROM employees""" result_set = cursor.execute(sql_query).fetchall() for row in result_set: print(row) except Exception as e: print(f'Error occurred:{e}') finally: if connection is not None and connection.is_connected(): connection.close() ``` 此脚本实现了基本的功能——从员工表格里检索全部记录并打印出来。当然实际应用当中可能还需要考虑异常捕获机制以及其他安全措施等问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值