为实现“按名存取”,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。文件目录表目至少要包含文件名、文件的类型、文件的长度、访问权限、建立时间、访问时间和文件存储地址等内容。通过前面一章的介绍,我们已经知道在文件信息中已经包含了文件名、文件类型访问权限等信息,而存储地址的信息则包含在目录信息中。
创新互联建站2013年至今,是专业互联网技术服务公司,拥有项目做网站、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元逊克做网站,已为上家服务,为逊克各地企业和个人服务,联系电话:18980820575
16.1路径
路径通常用一个字符串来表示,可以按照路径信息定位到一个目录或文件。如:“C:UsersAdministratorPictures1.jpg”这个信息可以非常方便的找到这个图片文件,“C:UsersAdministratorPictures”这个信息可以帮助我们找到更多的图片文件。
这里所说的“路径”和上网时碰到的“地址”含义比较相似,互联网就相当于将个人电脑可以访问的范围扩大了,互联网中的地址也是对应某一个存储空间的路径,按照地址可以访问互联网上的信息,就如同按照路径可以找到计算机中的文件一样。
在Python中,可以导入 os模块 来进行目录操作。
1、获取当前工作目录getcwd()函数
例:
import os
print(os.getcwd())
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38
这个路径是当前Python IDLE所在的地址。
2、获取文件的绝对路径abspath()函数
abspath()函数是os模块的子模块path提供的一个函数。用法举例如下:
import os
print(os.path.abspath(r'test.txt'))
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38 est.txt
16.2 目录操作类函数
1、判断目录是否存在exists()函数
exists()函数是os模块的子模块path中的函数。使用方法举例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
输出结果:
True
2、创建目录mkdir()函数和makedirs()函数
mkdir()函数和makedirs()函数都是由os模块提供的,下面举例说明用法和区别。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
如果目录d: est已存在,则不再创建;若不存在,则创建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
虽然目录d: est已存在,但可以在其下继续创建子目录。上面的代码可以成功地创建d: est est1 est11目录。
mkdir()函数和makedirs()函数用法基本一样,不同之处在于mkdir()函数只能能创建一级目录。
3、删除目录函数rmdir()函数
rmdir()函数是由os模块提供的。
例如:通过上面的例子已经建立了d: est est1 est11目录,现在去删除子目录test11(此子目录为空目录),代码如下:
import os
os.rmdir('d:testtest1test11')
如果要删除的目录非空(其下还包含有文件或文件夹),则不能删除,并且出现Windows文件操作错误的提示(Python是调用操作系统命令完成文件和目录操作的)。譬如d: est目录下含有有子目录,则不能对其进行如下删除操作。
import os
os.rmdir('d:test')
此时,会出现如下错误提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目录不是空的。: 'd:test'
4、删除非空目录函数rmtree()函数
rmtree()函数是由Python内置的标准模块shutil提供的,可以删除目录及目录下的文件和子目录。如删除d: est目录及其下的子目录和文件,可用如下代码:
import shutil
shutil.rmtree('d:test')
5、遍历目录walk()函数
walk()函数是由os模块提供的。
语法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍历的目录的地址;topdown为可选参数,为 True时自上而下遍历 目录,为False时自下而上遍历目录,默认值为True;onerror为可选参数,用于指定异常处理方式,默认为忽略;followlinks为可选参数,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
该函数的返回值为一个三元组(root,dirs,files)。root 所指的是当前正在遍历的这个文件夹的本身的地址;dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。
例:遍历d: est目录及其子目录下的所有子目录和文件:
d: est目录及其下的子目录和文件
import os
path='d:test'
tups=os.walk(path) # 函数walk()的返回值为三元组
for root,dirs,files in tups: # 遍历这个三元组
for name in dirs: #遍历存放目录值的元组
print('dir:',os.path.join(root,name))
for name in files: #遍历存放文件名值的元组
print('file:',os.path.join(root,name))
运行结果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夹
file: d: est est1新建文本文档.txt
file: d: est est1 est11新建文本文档.txt
Python是一种高级的程序设计语言。
如果你用过basic、VB那么你可以将它认为是在各种平台下的basic,因为它像basic一样简单易学,但是它也不同于basic,最在的不同,当然是python的功能强大和它的优秀设计了,最重要的是它是开放源代码产品,使用它开发的程序不必为许可证而烦恼了。要知道当年比尔曾经以500美元的天价发放BASIC的使用许可证呢。然后basic能够做到的事情实在是太少了。包括今天的VB它能够做到的事情也是很有限的。而Python,你根本不用怀疑它的功能,网络编程,web程序程序设计,游戏编程,图像编程,数据库编程,所有的编程领域你都可以找到它的身影。总而言之:Python是一种高级的程序设计语言,它也是一种面向对象的程序设计语言,它可以帮我们快速的解决我们的枯燥的编程工作。
Python, perl ,php:
perl一直是UNIX系统管理员的利器,当然这最得益于它的文本处理强大功能和CPAN这个网络提供了各行各业的相应的解决方案了,它一直是黑客最喜欢的语言。它简练,功能强大,但是写的程序非常的难懂。而且支持多线程并不理想,用perl并不是写大型程序的最好选择,有人会当机,但是我没有试验过。现在有了python,UNIX系统管理员和UNIX应用系统开发人员就多了一种选择了,加载re模块,python同样可以处理复杂文本需求。php这门语言也是我的最爱,它和python一样简单,甚至要更简单,因为它专注于web开发,这一点我想是值得肯定的。无论是perl,python,java或者是asp比起php(在开发web领域方面)它们都是大大的不如。有人说java好,我想这是不一定的。之所以说java好,是因为有很多的大软件公司支持它,有相应的解决方案,但是在开发效率和稳定性上java不一定就比php强多少,有人批评说php对oop支持不好,其实oop不一定是解决问题的最好办法。而且随着php5的推出,java在oop方面的优势几乎是不存存了。而java赖以成名的跨平台更是可笑:php,perl,python的跨平台特性都比java强了不知道多少。
eval是计算一个表达式用的。
如果要执行一句需要用exec。
不过top这个对象的eval含义也许不是这样子。
从表面上看top.eval(package
require
Tix)这句话,如果按python语法来执行应该是这样
先计算package
require
Tix,然后将值传递给top.eval
我试着执行了一次,
top.eval(package
require
Tix),
在python2.7上无法执行。
但是top.eval('package
require
Tix'),
可以执行。
返回8.4.3
但是eval('package
require
Tix')
不能执行。
最终结论是这样子。
top.eval是Tk对象的一个特殊函数。
用于检查包的版本号。
‘package
require
Tix'这一句话是TCL语言的语法。因为Tkinter本身就是TCL的库,只是被python拿来用。