Python 语法小记 input及对文件的操作

input函数用法

python input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。
raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。
注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的python表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
注意:==python3 里 input() 默认接收到的是 str 类型。==
函数语法
input([prompt])
参数说明:

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
input() 需要输入 python 表达式
>>>a = input("input:")
input:123 # 输入整数
>>> type(a)
<type 'int'> # 整型
>>> a = input("input:")
input:"runoob" # 正确,字符串表达式
>>> type(a)
<type 'str'> # 字符串
>>> a = input("input:")
input:runoob # 报错,不是表达式
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'runoob' is not defined
<type 'str'>
raw_input() 将所有输入作为字符串看待
>>>a = raw_input("input:")
input:123
>>> type(a)
<type 'str'> # 字符串
>>> a = raw_input("input:")
input:runoob
>>> type(a)
<type 'str'> # 字符串
>>>

文件的打开与关闭 open(文件名,访问模式)

f = open(‘test.txt’, ‘w’)

访问模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

1
2
3
4
5
# 新建一个文件,文件名为:test.txt
f = open('test.txt', 'w')

# 关闭这个文件
f.close()

文件的读写

写数据(write)

1
2
3
f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

读数据(read)

1
2
3
4
5
6
7
8
9
10
11
12
13
f = open('test.txt')

content = f.read(5)

print(content)

print("-"*30)

content = f.read()

print(content)

f.close()

读数据(readlines)

1
2
3
4
5
6
7
8
9
10
11
12
#coding=utf-8
f = open('test.txt', 'r')
content = f.readlines()

print(type(content))

i=1
for temp in content:
print("%d:%s"%(i, temp))
i+=1

f.close()


1:hello world, i am here!

2:hello world, i am here!

3:hello world, i am here!

4:hello world, i am here!

拷贝一个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#coding=utf-8

oldFileName = input("请输入要拷贝的文件名字:")

oldFile = open(oldFileName,'r')
# 如果打开文件
if oldFile:

# 提取文件的后缀
fileFlagNum = oldFileName.rfind('.')
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]

# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '[复件]' + fileFlag

# 创建新文件
newFile = open(newFileName, 'w')

# 把旧文件中的数据,一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
newFile.write(lineContent)

# 关闭文件
oldFile.close()
newFile.close()

文件夹的相关操作

创建文件夹

import os
os.mkdir(“张三”)

###获取当前目录
import os
os.getcwd()

###改变默认目录

1
2
3
import os

os.chdir("../")

1
2
3
import os
os.chdir("../../")
print(os.getcwd())

C:\Users\lenovo\workspace\te\src\test
C:\Users\lenovo\workspace\te

获取目录列表

1
2
3
import os

os.listdir("./")

[‘test.py’, ‘test[复件].txt’, ‘ts.py’]

删除文件

import os
os.remove(“毕业论文.txt”)

文件重命名

import os
os.rename(“毕业论文.txt”, “毕业论文-最终版.txt”)

python os.path模块常用方法

os.path.abspath(path)

返回path规范化的绝对路径。

os.path.abspath(‘test.csv’)
‘C:\Python25\test.csv’

os.path.abspath(‘c:\test.csv’)
‘c:\test.csv’

os.path.abspath(‘../csv\test.csv’)
‘C:\csv\test.csv’

os.path.split(path)

将path分割成目录和文件名二元组返回。

os.path.split(‘c:\csv\test.csv’)
(‘c:\csv’, ‘test.csv’)
os.path.split(‘c:\csv\‘)
(‘c:\csv’, ‘’)

os.path.dirname(path)

返回path的目录。其实就是os.path.split(path)的第一个元素。

os.path.dirname(‘c:\csv\test.csv’)
‘c:\‘
os.path.dirname(‘c:\csv’)
‘c:\‘

os.path.basename(path)

返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。

os.path.basename(‘c:\test.csv’)
‘test.csv’
os.path.basename(‘c:\csv’)
‘csv’ (这里csv被当作文件名处理了)
os.path.basename(‘c:\csv\‘)
‘’

os.path.commonprefix(list)

返回list中,所有path共有的最长的路径。

如:

os.path.commonprefix([‘/home/td’,’/home/td/ff’,’/home/td/fff’])
‘/home/td’

os.path.exists(path)

如果path存在,返回True;如果path不存在,返回False。

os.path.exists(‘c:\‘)
True
os.path.exists(‘c:\csv\test.csv’)
False

os.path.isabs(path)

如果path是绝对路径,返回True。

os.path.isfile(path)

如果path是一个存在的文件,返回True。否则返回False。

os.path.isfile(‘c:\boot.ini’)
True
os.path.isfile(‘c:\csv\test.csv’)
False
os.path.isfile(‘c:\csv\‘)
False

os.path.isdir(path)

如果path是一个存在的目录,则返回True。否则返回False。

os.path.isdir(‘c:\‘)
True
os.path.isdir(‘c:\csv\‘)
False
os.path.isdir(‘c:\windows\test.csv’)
False

os.path.join(path1[, path2[, …]])

将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。

os.path.join(‘c:\‘, ‘csv’, ‘test.csv’)
‘c:\csv\test.csv’
os.path.join(‘windows\temp’, ‘c:\‘, ‘csv’, ‘test.csv’)
‘c:\csv\test.csv’
os.path.join(‘/home/aa’,’/home/aa/bb’,’/home/aa/bb/c’)
‘/home/aa/bb/c’

os.path.normcase(path)

在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。

os.path.normcase(‘c:/windows\system32\‘)
‘c:\windows\system32\‘

####os.path.normpath(path)
规范化路径。

os.path.normpath(‘c://windows\System32\../Temp/‘)
‘c:\windows\Temp’

os.path.splitdrive(path)

返回(drivername,fpath)元组

os.path.splitdrive(‘c:\windows’)
(‘c:’, ‘\windows’)

os.path.splitext(path)

分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作

os.path.splitext(‘c:\csv\test.csv’)
(‘c:\csv\test’, ‘.csv’)

os.path.getsize(path)

返回path的文件的大小(字节)。

os.path.getsize(‘c:\boot.ini’)
299L

dirname() 用于去掉文件名,返回目录所在的路径

如:

import os

os.path.dirname(‘d:\library\book.txt’)
‘d:\library’

basename() 用于去掉目录的路径,只返回文件名

如:

import os

os.path.basename(‘d:\library\book.txt’)
‘book.txt’

join() 用于将分离的各部分组合成一个路径名

如:

import os

os.path.join(‘d:\library’,’book.txt’)
‘d:\library\book.txt’

split() 用于返回目录路径和文件名的元组

如:

import os

os.path.split(‘d:\library\book.txt’)
(‘d:\library’, ‘book.txt’)

splitdrive() 用于返回盘符和路径字符元组

import os

os.path.splitdrive(‘d:\library\book.txt’)
(‘d:’, ‘\library\book.txt’)

splitext() 用于返回文件名和扩展名元组

如:

os.path.splitext(‘d:\library\book.txt’)
(‘d:\library\book’, ‘.txt’)

os.path.splitext(‘book.txt’)
(‘book’, ‘.txt’)