对Python w和w+权限的区别详解

今日上课,有位同学问到:w和w+有何区别呢。

说实话,我们经常只是用一种权限,没用在意之间的区别,实际上,w+具有可读可写权限,而w只有可写权限。

下面上代码:

  fd=open('d:\\test.txt','w+') 

  fd.write('123')

  fd.close()

如果这样用,确实两者没有区别,但是在下面就有区别了。

  fd=open('d:\\test.txt','w+')
  fd.write('123')
  fd.seek(0)
  print(fd.read())

  fd.close() #首先写信息,然后定位到文件开头,读文件信息。

如果w+改成w就会出错,提示信息:io.UnsupportedOperation: not readable,意思就是没有读的权限,只要是w+,程序就没有任何问题了。

以后大家如果同时读写就用+,但别忘了文件要重新定位到开头。

好了,大家学习愉快!

以上这篇对Python w和w+权限的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python中设置变量访问权限的方法

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name.score属性: >>> bart = Student('Bart Simpson', 98) >>> bart.score 98 >>> bart.score = 59 >>> bart.score 59 如果要让内部属性不被外部

  • Python 查看文件的读写权限方法

    实例如下: # -*- coding: utf-8 -*- # @author flynetcn import sys, os, pwd, stat, datetime; LOG_FILE = '/var/log/checkDirPermission.log'; nginxWritableDirs = [ '/var/log/nginx', '/usr/local/www/var', ]; otherReadableDirs = [ '/var/log/nginx', '/usr/local/w

  • Windows上使用Python增加或删除权限的方法

    在使用Python在 Windows 平台上开发的时候, 有时候我们需要动态增加或删除用户的某些权限, 此时我们可以通过 AdjustTokenPrivileges API 来实现. 比如,我们要给用户分配 SE_TCB_NAME 权限 flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY token = win32security.OpenProcessToken(win32api.GetCurren

  • 浅谈python对象数据的读写权限

    面向对象的编程语言在写大型程序的的时候,往往比面向过程的语言用起来更方便,安全.其中原因之一在于:类机制. 类,对众多的数据进行分类,封装,让一个数据对象成为一个完整的个体,贴近现实生活,高度抽象化.但是,python对类的封装并不好,因为所有的属性和方法都是公开的,你可以随意访问或者写入,你可以在类的外部对类的属性进行修改,甚至添加属性.这的确让人感到不安. 下面就来总结一下学习后的解决方案. 1,使用2个下划线前缀隐藏属性或者方法. __xxx #!/usr/bin/python3 #-*-

  • Python判断某个用户对某个文件的权限

    在Python我们要判断一个文件对当前用户有没有读.写.执行权限,我们通常可以使用os.access函数来实现,比如: # 判断读权限 os.access(<my file>, os.R_OK) # 判断写权限 os.access(<my file>, os.W_OK) # 判断执行权限 os.access(<my file>, os.X_OK) # 判断读.写.执行权限 os.access(<my file>, os.R_OK | os.W_OK | os

  • 对Python w和w+权限的区别详解

    今日上课,有位同学问到:w和w+有何区别呢. 说实话,我们经常只是用一种权限,没用在意之间的区别,实际上,w+具有可读可写权限,而w只有可写权限. 下面上代码: fd=open('d:\\test.txt','w+') fd.write('123') fd.close() 如果这样用,确实两者没有区别,但是在下面就有区别了. fd=open('d:\\test.txt','w+') fd.write('123') fd.seek(0) print(fd.read()) fd.close() #首

  • 对python中dict和json的区别详解

    1.json 和 字典 区别 >>>import json >>>json.dumps({1:2}) >>>'{"1":2}' -------------------- >>>{1:2} >>>{1:@} 其中字典的格式是字典,json的格式是字符串,在传输的时候用的是字符串,所以如果要传输字典内容,就需要先进行字典转json. json中必须使用双引号,dict则可以用单引号也可以用双引号 2.

  • python json.dumps() json.dump()的区别详解

    以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成str格式,loads是将str转化成dict格式. dump和load也是类似的功能,只是与文件操作结合起来了. 看代码实例: In [1]: import json In [2]: a = {'name': 'wang', 'age': 29} In [3]: b = json.dumps(a)

  • 基于python中staticmethod和classmethod的区别(详解)

    例子 class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print "executing class_foo(%s,%s)"%(cls,x) @staticmethod def static_foo(x): print "executing static_foo(%s)"%x a=A(

  • python中import reload __import__的区别详解

    import 作用:导入/引入一个python标准模块,其中包括.py文件.带有__init__.py文件的目录(自定义模块). import module_name[,module1,...] from module import *|child[,child1,...] 注意:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境. 实例: pythontab.py #!/usr/bin/env python #encoding: utf-8

  • 基于Python中capitalize()与title()的区别详解

    capitalize()与title()都可以实现字符串首字母大写. 主要区别在于: capitalize(): 字符串第一个字母大写 title(): 字符串内的所有单词的首字母大写 例如: >>> str='huang bi quan' >>> str.capitalize() 'Huang bi quan' #第一个字母大写 >>> str.title() 'Huang Bi Quan' #所有单词的首字母大写 非字母开头的情况: >>

  • 对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异步的性能区别,可以看到异步直接同时执行并完成, # 而同步,需要等待第一个完成后再次执行下一个,是有顺序的执行,而异步不需要 import time def task(pid): gevent.sleep(0.5) print('Task %s done' % pid) def task2(pid)

  • 对Python中Iterator和Iterable的区别详解

    Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器.为什么? 因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的,也就是说有多少事可知的.但迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的. 判断是不是可以迭代,用Iterable from collections import Iterable isinstance({}, Iterab

  • Python中生成器和迭代器的区别详解

    Python中生成器和迭代器的区别(代码在Python3.5下测试): Num01–>迭代器 定义: 对于list.string.tuple.dict等这些容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数.iter()是python内置函数. iter()函数会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内的元素.next()也是python内置函数.在没有后续元素时,next()会抛出一个StopIteration异常,通知for语句

  • 对python中return与yield的区别详解

    首先比较下return 与 yield的区别: return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束. yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束 首先,如果你还没有对yield有个初步分认识,那么你先把yield看做"return",这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了.看做return

随机推荐