, FloatingPointError LookupError 当映射或序列所使用的的键或索引无效时引发的异常:IndexError、KeyError,都是继承该类 常见的具体内置异常 均是Exception...;是ImportError的子类 IndexError:取序列索引超出范围 KeyError:在字典中找不到指定的Key TypeError:当一个操作或函数被应用于类型不适当的对象时将被引发,传入参数的类型错误...:文件找不到(如:open一个文件) PermissionError:没有权限操作文件(如:写入内容到一个正在打开的文件) IsADirectoryError:对目录进行文件操作(如:os.remove...") 执行结果 # 若找不到myfile.txt OS error: [Errno 2] No such file or directory: 'myfile.txt' # 若找到文件了,但里面包含字母...一下,否则不知道异常是什么 except 如果写 必须放在所有 except 后面 else 的作用:当try里面的代码没有异常时就执行else里面的代码,可以理解成: try 里面写有可能发生异常的代码块
异常BufferError 当无法执行缓冲区相关操作时引发。 异常LookupError 当映射或序列上使用的键或索引无效时引发异常的基类:IndexError,KeyError。...当使用2元组创建此类型的异常时,第一个项目在实例的errno属性上可用(假定为错误编号),第二个项目可用于该 strerror属性(通常是关联的错误消息)。元组本身也可以在args属性上使用。...该filename属性是None使用3个参数以外的其他异常创建的。的errno和strerror属性也None当实例与其他大于2个或3个参数创建。...异常EOFError 当其中一个内置函数(input()或raw_input())在没有读取任何数据的情况下触发文件结束条件(EOF)时引发。...异常IOError 当I / O操作(如print语句,内置 open()函数或文件对象的方法)因I / O相关原因(例如“未找到文件”或“磁盘已满”)而失败时引发。
print "hello pyyu" hello pyyu [root@py_unix ~]# echo "Hello pyyu" Hello pyyu IPython与Bash执行命令 Bash查看当前目录下的文件...: [Errno 2] No such file or directory python脚本的运行 [root@py_unix home]# cat ls.py #!...subprocess模块仅仅是将可以使用的代码文件加载进来。...也可以创建自己的模块或文件,拱以后重复使用,这与加载subprocess模块的方法相同。IPython shell的一个非常好的优点就是可以对模块或者文件检查,查看其内部可用的属性。 ...通常我们编写代码时,会采用同时运行文本编辑器和python的方式(稍后会有介绍,这实际上运行的就是Ipython),通过交互式的使用编辑器和shell,也就是在两者之间切换来完成程序的编写。
而下面的代码,一旦从字典中获取不存在的键,如果没有任何try保护,则程序直接中断在这里,表现出来的现象就是app直接挂掉或闪退,这显然非常不友好。...d = {'a': 1, 'b': [1, 2, 3]} val = d['c'] 再举一个try和except使用的例子,如果目录已存在则触发OSError异常,并通过except捕获到然后在块里面做一些异常处理逻辑...= errno.EEXIST: raise # PermissionError 等异常 else: # path 目录已存在 以上这种使用try和except...举一个例子,如下try块里的逻辑:出现某种情况修改磁盘的csv文件里的某个值,这些逻辑都顺利完成,但是走到下面这句代码时程序出现异常,进而被except捕获,然后做一些异常处理: try: if...= errno.EEXIST: raise # PermissionError 等异常 else: # path 目录已存在 使用LBYL来写就是如下这样:
2] No such file or directory: '我为什么是一个文档.txt' 显然这样的用户体验很糟糕,因此可以这样修改: try: f = open("我为什么是一个文档....txt") print(f.read()) f.close() except OSError: print("文件打开的过程出错啦") 上面的例子由于使用了大家习惯的语言来表达错误的信息...,用户体验当然会好很多: 文件打开的过程出错啦 但是从程序员的角度来看,导致OSError异常的原因有很多(例如FileExistsError、FileNotFoundError等等),所以可能会更在意错误的具体内容...OSError as reason: print("文件打开的过程出错啦,错误的原因是:" + str(reason)) 文件打开的过程出错啦,错误的原因是:[Errno 2] No such...此时python将直接跳转到except语句,也就是说,文件被打开了,但并没有执行关闭的命令: try: f = open("我是一个不存在的文档.txt") print(f.read
1 守护进程 1.1 守护进程 守护进程是系统中生存期较长的一种进程,常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,在后台运行。...至此,这个子进程作为新的进程组的组长,完全脱离了其他进程的控制,并且没有控制终端。 4、将当前工作目录更改为根目录(或某一特定目录位置)。...6、某些守护进程可以打开/dev/null使其具有文件描述符0、1、2,这使任何一个试图读标准输入、写标准输出或标准错误的库例程都不会产生任何效果。...8、用日志系统记录出错信息 因为守护进程没有控制终端,当进程出现错误时无法写入到标准输出上,可以通过调用syslog将出错信息写入到指定的文件中。...os.setsid() '''防止在类似于临时挂载的文件系统下运行,例如/mnt文件夹下,这样守护进程一旦运行,临时挂载的文件系统就无法卸载了,这里我们推荐把当前工作目录切换到根目录下''' os.chdir
,就可以直接使用chdir切换到刚才的目录下面了。...,这个命令相当于shell中没有使用-p参数时候的情况,如果该目录存在,则无法创建成功。...call last): File "", line 1, in OSError: [Errno 2] No such file or directory: '/tmp...如果你的目录是个文件,就可以很方便的拿到这个文件的上级目录 os.path还有其他的一些函数,例如: os.path.exists()方法可以判断当前的目录是否存在, os.path.dirname...(n)方法,相当于shell中异常退出的exit 1命令 在Python中,正常退出可以不用写代码,执行完毕退出的时候,exit的值就是0,当遇到异常的时候,就可以使用sys.exit(1)的方法告诉程序当前执行过程中出现了问题
,如果目录非空,则抛出一个OSError异常 os.rmdir("folder") except OSError as e: print(e) os.remove('folder/ccc.txt...os.rmdir(name)是删除指定的文件夹,如果删除的文件夹不是一个空的文件夹,会报错,抛出OSError异常,如上面的folder中有ccc.txt文件时,删除时报错了。...在传入path时,最后也可以是一个文件,这样会先递归创建目录,然后在最里层创建文件。...path的最里层可以指定到文件(如果有文件的话)。 当递归删除的文件夹中有文件时,如果path没有指定到文件,只指定到文件夹,删除会失败,文件夹里面为空才能删除成功。...os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])的参数: top为指定的目录或路径,是一个文件夹。
[as reaon]: 出现异常后执行的代码 else: 当没有异常发生时,else中的语句将会被执行 # 方式3.try - except - finally 语句 try:...检测的代码块 except Exception [as reaon]: 出现异常后执行的代码 else: 当没有异常发生时,else中的语句将会被执行 finally: 无论怎么样都会被执行的代码...│ └── ModuleNotFoundError ├── LookupError # 当映射或序列所使用的键或索引无效时引发的异常 │ ├── IndexError...│ └── UnboundLocalError ├── OSError # 系统函数返回系统相关的错误时将被引发,此类错误包括 I/O 操作失败例如 "文件未找到" 或...├── TypeError # 当一个操作或函数被应用于类型不适当的对象时将被引发。
作为一名合格的技术员,在要=使用os.walk来提取压缩文件并避免递归提取,我们可以在遍历文件时检查文件的扩展名,并且只处理压缩文件而非目录。...在以下代码中,extractRecursive 函数通过 os.walk 遍历指定路径下的所有文件和目录,并使用 magic 模块来识别文件类型。...当遇到压缩文件时,会调用 arcExtract 函数来解压该文件。但是,extractRecursive 函数在解压完成后还会再次调用自身,导致递归提取过多。...这样就可以避免递归提取过多,提高性能。使用os.walk提取压缩文件并避免递归提取并不难,只要你熟悉Python的文件操作和zipfile模块的基本用法。...os.walk提供了一种逐级遍历目录结构的简单方法,而zipfile模块则可以用来处理压缩文件。主要的挑战可能在于理解如何在遍历文件时过滤出压缩文件,并且在解压缩时避免递归提取。
),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道umask的用途了,它是为了控制默认权限...,不要使默认的文件和目录具有全权而设的 def createDaemon(): #脱离父进程 try: pid = os.fork() if pid >..._exit(1) #修改当前的工作目录 os.chdir('/') #脱离终端 os.setsid() #重设文件创建权限 os.umask(0) ...supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。..._exit(1) #修改当前的工作目录 os.chdir('/') #脱离终端 os.setsid() #重设文件创建权限 os.umask(0)
+-- AttributeError # 属性引用或赋值失败 +-- BufferError # 无法执行与缓冲区相关的操作时引发 +-- EOFError # 当input...# 无法找到模块或在在sys.modules中找到None +-- LookupError # 映射或序列上使用的键或索引无效时引发的异常的基类 | +-- IndexError...| +-- FileNotFoundError # 请求不存在的文件或目录 | +-- InterruptedError # 系统调用被输入信号中断...异常捕获 当发生异常时,我们就需要对异常进行捕获,然后进行相应的处理。...如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。 2.4 异常中的else 如果判断完没有某些异常之后还想做其他事,就可以使用下面这样的else语句。
'\n' os.pathsep 输出用于分割文件路径的字符串 >>> os.pathsep ':' os.name 输出字符串指示当前使用平台。...: [Errno 2] No such file or directory: 'zabbix' os.popen('command').read() : 获取命令结果,不带命令执行状态 >>> a=os.popen...,说明没有复制文件内容 shutil.copystate(): copy文件的权限,最后的访问时间、修改时间 先查看aaa、bbb文件的最后访问时间和修改时间: ls -lu:查看文件的最后访问时间...new 目录(new目录必须不存在,否则报错),目录下的文件也会拷贝,如果第三个参数是True,则复制时保持目录下的符号链接,如果是False,则复制时生成文件来替代符号链接 [root@localhost...() 解释:首先导入该模块;然后创建一个解析对象;然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;最后调用parse_args()方法进行解析
test.py-rw-r--r-- 1 foo foo 359 Feb 19 09:21 test.py <======== 只有名字包含 test 的文件被列出2.subprocess.run...相当于把标准错误重定向到标准输入中) subprocess.DEVNULL: 用作 stdout, stderr 参数的值时,相当于把输出内容重定向到 /dev/null 用户已经打开的文件对象或描述符...True 时,args 参数会当做一条命令字符串(支持管道、重定向操作);当它为 False 时,args 需是一个列表(并且不支持管道、重定向操作)cwd: 指定执行命令的目录,默认为当前目录timeout...异常text: 当设置为 True 时,stdin、stdout、stderr 会以“文本”模式打开(返回值对象中的 stdout、stderr 存储文本内容),否则返回值对象中 stdout、stderr...4.subprocess.check_output()Python 3.5 以前的版本,要想捕获命令输出内容,可以使用 subprocess.check_output() 方法,它的原型如下:subprocess.check_output
调用‘chdir("/")’确认我们的进程不保持任何目录于使用状态。不做这个会导 致系统管理员不能卸装(umount)一个文件系统,因为它是我们的当前工作目录。 ...调用‘close()’关闭文件描述符0,1和2。这样我们释放了从父进程继承的标 准输入,标准输出,和标准错误输出。...然后使用一个循环,守护程序可以关闭所有可能的文件描 述符。你必须决定你需要做这个或不做。...(译者注:一 般使用dup2函数原子化关闭和复制文件描述符。...except OSError, e: sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror))
守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。...守护进程的特性 1.在后台运行 2.与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等。...总之,除开这些特殊性以外,守护进程与普通进程基本上没有什么区别。因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。...守护进程编程规则 1.在后台运行,调用fork ,然后使父进程exit 2.脱离控制终端,登录会话和进程组,调用setsid()使进程成为会话组长 3.禁止进程重新打开控制终端 4.关闭打开的文件描述符... verbose 表示将启动运行过程中的异常错误信息打印到终端,便于调试,建议非调试模式下关闭, 默认为1, 表示开启 save_path 表示守护进程pid文件的绝对路径
subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所欲我们可以根据需要来从中选取一个使用。...另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。...: [Errno 2] No such file or directory 4、subprocess.getstatusoutput() 接受字符串形式的命令,返回 一个元组形式的结果,第一个元素是命令执行状态...= subprocess.check_output("pwd") >>> res b'/root\n' # 结果以字节形式返回 四、subprocess.Popen() 其实以上subprocess使用的方法...原来这个是一个管道,这个需要画一个图来解释一下: 4、poll() 定时检查命令有没有执行完毕,执行完毕后返回执行结果的状态,没有执行完毕返回None >>> res = subprocess.Popen
在Python中读写文件不需要像Java或.Net一样要另外导入io"包",可直接使用open方法 open() 返回一个文件对象,并且通常使用两个参数:open(filename, mode) >>...) r+:可读可写 一般情况下,文件是以文本模式被打开,这意味着,你可以指定编码的对文件进行读写,如果没有指定就默认使用平台编码(具体查看open()) 在文本模式中,读取文件被默认的转换到平台指定的换行符...\n(Unix:\n,Windows:\r\n) 在写模式中,\n被转换为平台指定的换行符 对于文本文件修改还好,但是像JPEG或EXE文件会被破坏,所以在使用二进制模式读写这类文件时一定要小心。...在读写文件时要考虑很多意外的情况,如,没有找到要打开的文件就会抛异常(r模式): >>> open('f.txt', 'r') Traceback (most recent call last): ...File "", line 1, in IOError: [Errno 2] No such file or directory: 'f.txt' 所以在读文件时要对异常进行处理
仅当这文件夹是空的才可以, 否则, 抛出OSError。语法格式如下 os.rmdir(path) path – 要删除的目录路径 removedirs() 方法用于递归删除目录。...注意如果目录不为空,会抛出OSError:[Errno 66] Directory not empty.语法格式为 os.removedirs(path) 示例代码 import os os.rmdir...rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。...os.rename(src, dst) src – 要修改的目录名 dst – 修改后的目录名 renames() 方法用于递归重命名目录或文件。类似rename()。...listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
Exception类,python解析器会自动将通用异常类型名称放在内建命名空间中,所以当使用通用异常类型时,不需要import exceptions模块。...这样就可以触发一个异常,并且接收异常信息。 3.2 传递异常 当你捕获到异常之后又希望再次的触发异常只需要使用不带任何参数的raise关键字。...try..except..else 注意:except子句的数量没有限制,但使用多个except子句捕获异常时,如果异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。...如果没有找到与异常匹配的except子句(也可以不指定异常类型或指定同样异常类型Exception,来捕获所有异常),异常被递交到上层的try(若有try嵌套时),甚至会逐层向上提交异常给程序(逐层上升直到能找到匹配的...在使用类文件的流对象时,都需要单独的调用close()来关闭资源。
领取专属 10元无门槛券
手把手带您无忧上云