一些使用python时遇到的小问题记录
1.try语句
语法:
#完整的语法结构
try:
语句1...
except exception1:
语句2...
except exception2:
语句3...
except:
语句4...
else:
语句5...
finally:
语句6...
解释:
- 尝试执行
语句1
,执行遇到异常时,之下面的except语句,层层比较; - 是否是
exception1
,是否是exception2
,如果是则执行相应的语句2
或语句3
; - 如果except后面没有任何参数(
except:
),那么表示所有的exception都交给这段程序处理,执行语句5
; - 如果try中没有异常,那么except部分将跳过,执行else中的
语句5
; - finally是无论是否有异常,最后都要执行
语句6
。 - 流程如下:
try->异常->except->finally
try->无异常->else->finally
例子1
#例子1
try:
num = int(input('请输入一个整数:'))
result = 7/num
print(result)
except ValueError:
print('输入的值不是合法的整数')
except Exception as r:
print('未知错误 %s' %(r))
else:
print('计算正确')
finally:
print('无论是否有异常,都会执行的代码')
例子2:try的嵌套
#例子2:try的嵌套
try:
a = 1/0
print(a)
except:
print('flag1')
try:
b = 6/2
print(b)
except:
print('flag2')
2. eval() 方法
- 使用eval() 去除字符串两短的引号
string = "['abc']"
print(eval(string))
print(type(eval(string)))
结果:
['abc']
<class 'list'>
string1 = "'abc'"
print(string1)
print(eval(string1))
print(type(eval(string1)))
结果:
'abc'
abc
<class 'str'>
- eval()还有其他灵活的用法
python3中eval函数用法简介
Python中的eval()、exec()及其相关函数
3.python处理文件列表的顺序问题 list.sort()
- 在windows文件管理器中,文件按照数字从小到大排列(文件名只为数字时,eg.
123.txt
); - python处理文件时,并非按照windows文件管理器中的顺序
例子:
在windows文件管理器中:
使用python获取文件列表
import os
files = os.listdir("./files/")
print(files)
结果:
['0.txt', '1.txt', '10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt', '2.txt', '20.txt', '21.txt', '3.txt', '4.txt', '5.txt', '6.txt', '7.txt', '8.txt', '9.txt']
如何让python按照windows文件管理器中的顺序处理文件呢?
import os
#将文件夹按文件名排序
list_f = []
for f in os.listdir("./files/"):
f = int(f.replace(".txt", ""))
list_f.append(f)
list_f.sort()
print("list_f:",list_f)
for f in list_f:
f = str(f) + ".txt"
print(f)
infile = os.path.join("./files/", f)
结果:
list_f: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
0.txt
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
10.txt
11.txt
12.txt
13.txt
14.txt
15.txt
16.txt
17.txt
18.txt
19.txt
20.txt
21.txt
4. with open的用法
以前使用open
打开文件的时候,最后还需要关闭文件;
现在一般使用with open ()
的方法来操作文件,不需要手动关闭文件了。
with open('filename.txt', 'r') as f:
data_user=pd.read_csv(f) #文件的读操作
with open('data.txt', 'w') as f:
f.write('hello world') #文件的写操作
相关参数:
r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
file对象的属性:
file.read([size]) 将文件数据作为字符串返回,可选参数size控制读取的字节数
file.readlines([size]) 返回文件中行内容的列表,size参数可选
file.write(str) 将字符串写入文件
file.writelines(strings) 将字符串序列写入文件
file.close() 关闭文件
file.closed 表示文件已经被关闭,否则为False
file.mode Access文件打开时使用的访问模式
file.encoding 文件所使用的编码
file.name 文件名
file.newlines 未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表
file.softspace 为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用