您的位置:时时app平台注册网站 > 编程知识 > python 文件和路径操作函数小结【时时app平台注册

python 文件和路径操作函数小结【时时app平台注册

2019-11-08 01:33

先来看多少个利用os,path.isabs()的事例:

时时app平台注册网站 1

很明显,第一个路子是绝非难题,而后边都以自家任由输入的黄金年代串字符,为啥有个别再次回到True有的回来False呢?

 

自家翻看了Python3.5的文书档案,开掘了这么一句话:

os.path.``isabs class="sig-paren">(path class="sig-paren">)

Return True if  class="highlighted">path is an absolute  class="highlighted">pathname. On Unix, that means it begins with a slash, on Windows that it begins with a (back)slash after chopping off a potential drive letter.

也等于说在WIndow系统下,假若输入的字符串以" / "起头,os.path.isabs()就能够回来True,那么第多少个例子就可以见道了。

 

而第4个和第2个有何界别吧?不是都应该回到False吗?

翻看资料后作者找到了下边这段话:

The current os.path.isabs documentation says:
> isabs(path) 
>    Return True if path is an absolute pathname (begins with a slash). 
The "begins with a slash" part is incorrect since certain systems use a
different pathname notation.
For example, on Macintosh (where os.sep == ":") this is an absolute
pathname:
style="font-size: 14pt">hardDriveName:folderName1:folderName2:fileName.ext
...and this is a relative one:
:folderName1:fileName.ext
Moreover, on Windows os.path.isabs('\') returns True since '\' is an
alias for the current drive letter (e.g. C:\) hence, independently from
what said before, the documentation should include also the "backslash"
term.
It turns out that on Windows there are really 4 different kinds of paths:
1) Completely relative, e.g. foobar
2) Completely absolute, e.g. c:foobar or \servershare
3) Halfbreeds with no drive, e.g. foobar
4) Halfbreeds relative to the current working directory on a specific drive, e.g. c:foobar
Python 2.5's os.path.isabs() method considers both (2) and (3) to be absolute;

就算是python2的,不过这和python3应有没什么不一致。从下面这段话能够清楚,在Windows系统上,以“  //  "开端的字符串,os.path.isabs也会回到True。

接下来大家又有什么不可明白:

时时app平台注册网站 2

这就能够表达为什么第叁个再次回到False而第多少个重回True了。

 

 

 

 

4)linecache
看名字就清楚了,归属缓存类的
4.1 linecache.getline(filename,lineno[, module_globals]) #获得filename的第lineno行
4.2 linecache.clearcache()
4.3 linecache.checkcache([filename]) #检查更新

: os.listdir(path) //path为目录 效用也等于在path目录下进行dir命令,重返为list类型 print os.listdir('..') 2: os.path.walk(path,visit,arg) path :是将在遍历...

复制代码 代码如下:

1: os.listdir(path) //path为目录
功用也就是在path目录下实行dir命令,重临为list类型
print os.listdir('..')
2: os.path.walk(path,visit,arg)
path :是快要遍历的目录
visit :是三个函数指针,函数圆形为:
callback(arg,dir,fileList)
在那之中arg为为传给walk的arg , dir是path下的叁个索引,fileList为dir下的文件和目录组成的list, arg:传给visit用的
3:os.path.split(path)
path 为二个路径,
输出,把path分成两有的,具体看实例:
print os.path.split("abc/de.txt")
('abc', 'de.txt')
os.path.split("abc")
(", 'abc')
print os.path.split("de/abc/de")
('de/abc', 'de')
4: os.path.splitext(filename)
把公文名分成文件名称和扩张名
os.path.splitext(abc/abcd.txt)
('abc/abcd', '.txt')
5: os.path.dirname(path)
把目录名提出来
print os.path.dirname("abc")
#出口为空
print os.path.dirname('abcdef')
abc
6: os.path.basename(filename)
获得主文件名
print os.path.basename('abc')
abc
print os.path.basename('abc.txt')
abc
print os.path.basename('bcd/abc')
abc #其风流罗曼蒂克供给小心不包涵目录名称
print os.path.basename('.')
.
7:os.mkdir(path, [mode])
path为目录名: 这里有个须求,只可以创制一流目录
诸如path为 abc/def 则当前目录下必需存在abc 不然战败
8: os.makedirs(path [,mode])
能够创建多级目录
9:os.remove(path)删除四个文本,一定是叁个文件
os.removedirs(path) 删除三个索引下具备东西
os.rmdir(path) 删除五个索引,并且一定要空,不然os.errer
10:os.walk(path)
遍历path,再次回到一个对象,他的各样部分都以三个长富组
('目录x',[目录x下的目录list],目录x下边包车型客车文本)
举例:
a = os.walk('.')
for i in a:
print i
11:shutil.copy(src,dst)
把公文src内容拷贝到文件dst中。,目的区域必得能够写,假使dst存在,则dst被遮住
――――――――――――――――――
11.1 os.path -- 普通的路线名操作
本条模块完结部分在门路名称上有效性的函数。
警告:在 Windows 上,这么些函数中的多个不能够科学地辅助 UNC 路线名。splitunc() 和 ismount() 能够正确地拍卖它们。
abspath(path)
回来 path 路线名一个规格化的绝对的本子。在大多数阳台上,也正是normpath(join(os.getcwd(), path))。1.5.2本子中的新特点。
basename(path)
重返 path 路线名最尾部的名号。那是由 split(path)重返的对的第二半片段。注意这些函数的结果分化于Unix basename 程序;UNIX的 basename对于'/foo/bar/' 重返 'bar',basename() 函数重回二个空字符串('')。
commonprefix(list)
再次回到最长的路径前缀(采纳字符的字符),是 list中有所路线的八个前缀。假若list 为空,重回空字符串('')。注意能够回来无效的门径因为它每便操作多少个字符。
dirname(path)
回去 path 路线名的目录名称。那是由 split(path)重返的没错率先半有个别。
exists(path)
万风流浪漫 path 与一个已存在的门道关联重临True。对于毁损的暗记连接再次来到 False 。在部分平台上,如若权力未有被赋予在伸手的文书上实行os.stat()这些函数也许回到False,纵然该 path 实际上存在。
lexists(path)
例如 path 与二个已存在的路线关联再次来到 True 。对于破坏的总是重返 True 。在一些缺点和失误 os.lstat()的阳台上相当于 exists() 。2.4本子中的新天性。
expanduser(path)
在 Unix上,返回 "~"或"~user"做为替换客商的主目录的发端部分的参数。初步的"~" 通过遭受变量 HOME(如若它棉被服装置卡塔尔国替换; 不然当前顾客的主目录在口令目录中通过内置模块 pwd被询问。早前的"~user" 间接地在口令目录中被询问。
在 Windows 上,仅支持 "~" ;它经过情状变量 HOME 或透过HOMED陆风X8IVE 和 HOMEPATH的构成替换。
假使该扩大退步或只要该路径不以八个波浪号伊始,被再次回到的门路无修改。
expandvars(path)
归来使用情形变量扩大的参数。"$name" 或 "${name}"格式的子串通过意况变量 name 的值被沟通。残破的变量名称和引用海市蜃楼的变量被无修改的抛开。
getatime(path)
重临 path 的末了访谈时间。重临的值是三个从新纪元起头的秒数(参见 time 模块)。如若文件不设有或不足访谈挂起 os.error 。1.5.2本子中的新特色。2.3版本中的改造:若是 os.stat_float_times() 重返True,结果是三个浮点数。
getmtime(path)
归来 path 最终修改的年华。重回值是三个从新纪元开始的秒数(参见 time 模块)。假如文件空头支票或不足访谈挂起 os.error 。1.5.2版本中的新特征。2.3本子中的更换:如若 os.stat_float_times() 重临True,结果是三个浮点数。
getctime(path)
回去系统的 ctime ,在有的种类上 (像Unix) 是最后退换的流年,在其它一些种类上 (像Windows),是 path 创造的时间。再次回到值是三个从新纪元初叶的秒数(参见 time 模块)。若是文件不设有或不足访谈挂起 os.error 。2.3版本中的新特色。
getsize(path)
以字节为单位,重回 path 的轻重。借使文件空中楼阁或不足访问挂起 os.error 。1.5.2本子中的新性格。
isabs(path)
譬喻 path 是八个相对路线名再次来到True (以二个斜杠开始)。
isfile(path)
要是 path 是一个已存在的常备文书再次来到True 。那效仿符号连接,由此 islink() 和 isfile() 对于同风姿洒脱的不二秘技都足以重临 true 。
isdir(path)
生机勃勃旦 path 是三个已存在的目录再次来到 True 。那效仿符号链接,因而 islink() 和 isdir() 对于相同的门路都足以再次回到 true 。
islink(path)
假定 path 援引贰个目录项,它是一个标识连接,再次来到True。假若不帮助符号连接始终再次回到False 。
ismount(path)
即使路线名 path是一个 挂载点 重返 True :在文件系统中的那三个点一个不意气风发的文件系统已经被挂载。这几个函数检查评定是或不是path的父路径, path/..,和 path 是三个例外的设施,或是或不是 path/.. 和 path 在同一的装置上针对相近的i-node -- 那应当是为具有的 Unix 和 POSIX 变种检查测量检验挂载点。
join(path1[, path2[, ...]])
智能化地一连三个或三个门路组件。如若任风华正茂组件是二个相对路线,全部后边的零器件被放任(在Windows 上,包涵后面包车型地铁驱动器名,如果有) ,并且接二连三连接。重临的值是 path1,和可选地 path2等的咬合,准确地以一个目录分隔符 (os.sep)插入到五个构件之间,除非 path2 为空。注目的在于 Windows 上,因为种种驱动器有一个当前目录,os.path.join("c:", "foo")表示相对于驱动器 C: 上的当前目录的三个门路(c:foo),实际不是c:\foo。
normcase(path)
标准三个路线名的高低写。在Unix上,重返未改动的路子;在不区分朗朗上口写的文件系统上,它调换路径为小写字母。在Windows上 ,它也转移正斜杠为反斜杠。
normpath(path)
标准三个路线名。折叠多余(或冗长的卡塔 尔(英语:State of Qatar)分隔符并且定位于外层引用,招致于 A//B,A/./B 和 A/foo/../B 都成为 A/B。它不标准大小写(规范化大小写用 normcase())。在Windows上,它调换正斜杠为反斜杠。要是它包涵符号连接,它应当通晓那只怕改造路线的意向!
realpath(path)
回到钦赐的公文名正式的门道,除去在路线中蒙受的其他标记连接(即便操作系统补助)。2.2本子中的新特征。
samefile(path1, path2)
意气风发经路线名参数与雷同的文件或目录关联重临 True (通过配备号和 i-node 数表示)。假设 os.stat() 调用每一种路线名战败挂起贰个极度。有效的:Macintosh,Unix。
sameopenfile(fp1, fp2)
若是文件陈说符 fp1 和 fp2 与同生龙活虎的文书关连重临 True 。有效的:Macintosh,Unix。
samestat(stat1, stat2)
设若 stat 元组 stat1和stat2 与平等的公文关连再次来到 True 。那几个结构大概由fstat(),lstat(),或stat()再次来到。那几个函数使用samefile() 和 sameopenfile()完结了基本的可比。有效的:Macintosh,Unix。
split(path)
分割路线名 path 到贰个对中,(head, tail)中 tail 是终极的门道名组件head 是指导它的任何事物。tail 部分将直接都不包蕴斜线;假使 path 以三个斜线结尾,tail 将为空。假诺 path 中并未有斜线,head 将为空。假如path 为空,head 和 tail 都为空。尾随斜线从 head 中被剔除,除非它是根(one or more slashes only)。在大约全数的景况中,join(head, tail) 相当于 path (唯有七个不等是当从 tail 中 head 被多少个斜线分割时)。
splitdrive(path)
细分路线名 path 到叁个(drive, tail) 对中,drive 是每一个驱动器的验证或空字符串。在系统上不接收驱动器表明的,drive 将直接是空字符。在具备情状中,drive tail 将和 path 相近。1.3本子中的新特色。
splitext(path)
分割路线名 path 到生机勃勃对 (root, ext) 中产生 root ext == path,而且ext 为空或以八个句点起头还要只多带有二个句点。
splitunc(path)
划分路线名 path 到贰个对(unc, rest)中以便于 unc 是 UNC 挂载点 (诸如 r'\hostmount'),即便,并且 rest 路线的其他部分(诸如 r'pathfile.ext')。对于路线满含驱动器名,unc 将直接是空字符。有效的:Windows。
walk(path, visit, arg)
对此以 path 为根的目录树中的每贰个目录 (包涵 path 本人,如若它是一个目录),以参数 (arg, dirname, names)调用函数 visit 。参数 dirname 钦赐访谈的目录,参数 names 列出在目录中的文件(从 os.listdir(dirname)中得到)。visit 函数能够改过 names 改动 dirname 上面访谈的目录的装置,例如,防止访谈树的某生机勃勃有的。(由 names 关连的指标必需在适龄之处被涂改,使用 del 或 slice 指使。)
留意:符号连接到目录不被看做叁个子目录管理,况兼因而walk()将不访谈它们。访谈连接的目录你不得不以os.path.islink(file) 和 os.path.isdir(file)标记它们,何况必得调用walk() 。

其错误的地方是有目共睹的。不明了那一个函数为何如此写,在windows平台,能够如下实现该意义
def ismount(path):
p = splitdrive(path)[1]
if len(p) > 0:
return(False)
else:
return(True)

# Is a path a mount point? Either a root (with or without drive letter)
# or an UNC path with at most a / or after the mount point.

def copytree(src, dst, symlinks=False):
names = os.listdir(src)
os.makedirs(dst)
errors = []
for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks)
else:
copy2(srcname, dstname)
# XXX What about devices, sockets etc.?
except (IOError, os.error) as why:
errors.append((srcname, dstname, str(why)))
# catch the Error from the recursive copytree so that we can
# continue with other files
except Error as err:
errors.extend(err.args[0])
try:
copystat(src, dst)
except WindowsError:
# can't copy file access times on Windows
pass
except OSError as why:
errors.extend((src, dst, str(why)))
if errors:
raise Error(errors)

2.1 fileinput.input([files[, inplace[, backup[,mode[,openhook]]]]])
创造叁个fileinput的实例,若是files为空,则指向调控台得到输入;如若file为'-',同样转向调整台拿到输入。
暗中同意情形,文件以text mode张开,要是需求任何格式,则供给钦命。
2.2 fileinput.filename() #唯有当读入第大器晚成行未来,该值才被赋值
2.3 fileinput.fileno()
2.4 fileinput.lineno()
2.5 fileinput.filelineno()
2.6 fileinput.isfirstline()
2.7 fileinput.isstdin()
2.8 fileinput.nextfile()
2.9 fileinput.close()

5)shutil 重视推荐介绍的袄,好东西,扶植文件集结的复制和删除操作
5.1 shutil.copyfileobj(fsrc, fdst[, length])
5.2 shutil.copyfile(src, dst) #下面2个都以文本的复制
5.3 shutil.copymode(src, dst) #除却复制内容,还或然会复制其余的一些新闻,比方小编
5.4 shutil.copystat(src, dst) #除此而外复制内容,还恐怕会复制存取时间的音信
5.5 shutil.copy(src, dst) #复制文件到dst,当dst为目录时,复制到子目录
5.6 shutil.copy2(src, dst) #一定于先copy再copystat
5.7 shutil.copytree(src, dst[, symlinks=False[, ingore=None]]) #复制文件夹树,注意,dst文件夹必得是空头支票的
5.8 shutil.rmtree(path[, ignore_erros[, onerror]])
5.9 shutil.move(src,dst)

3)glob
能够应用简单的艺术相配有些目录下的全数子目录或文件,用法也比较粗略。
3.1 glob.glob(regression) 再次回到一个列表
3.2 glob.iglob(regression) 再次回到二个遍历器
以此模块轻易好用,强力推荐。

2)fileinput
简言之利用
import file
input for line in fileinput.input():
process(line)

1)os.path
1.1 os.path.isabs(path) 是还是不是是相对路线
1.2 os.path.isfile(path)
1.3 os.path.isdir(path)
1.4 os.path.islink(path) 是不是是链接;但要是系统不帮助链接,再次来到False
1.5 os.path.ismount(path) 是不是为驱动器;不过特不幸的是在python 3.0中那是个不可能运营的函数。
原函数如下:

1.1 os.path.isabs(path) 是还是不是是相对路径1.2 os.path.isfile(path) 1.3 os.path.isdir(path) 1.4 os.path.islink(path) 是不是是链接;但借使系统不扶植链接,返...

其他平台未有对症用药的机械,不驾驭具体情状。
1.6 os.path.abspath(path) 返圮相对路线
1.7 os.path.dirname(path)
1.8 os.path.exists(path)
1.9 os.path.lexists(path) 和exists函数同样
1.10os.path.getsize(path)
1.11os.path.getctime(path) 重回浮点数的系统时间,在类Unix系统上是文本近期更正的岁月,
在Windows上是文件或目录的开创时间
1.12os.path.getmtime(path) 文件或目录最终修改的时光
1.13os.path.getatime(path) 文件或目录最终存取的岁月
1.14os.path.samefile(path1,path2) 借使2个门路指向相通的文本或目录,重返True(Windows上不可用)
1.15os.path.split(path) 分割路线,假若path是目录,重临[parentName, dirName];
如果path是文件,返回[dirName, fileName]
1.16os.path.splitext(path) 分割路径,要是path是目录,再次回到[parentName, ''];
如果path是文件,返回[dirName fileName, 文件后缀]

def ismount(path):
"""Test whether a path is a mount point (defined as root of drive)"""
unc, rest = splitunc(path)
seps = _get_bothseps(p)
if unc:
return rest in p[:0] seps
p = splitdrive(path)[1]
return len(p) == 1 and p[0] in seps

本文由时时app平台注册网站发布于编程知识,转载请注明出处:python 文件和路径操作函数小结【时时app平台注册

关键词: