精华内容
下载资源
问答
  • Python3中打开文件的方式(With open)

    万次阅读 多人点赞 2018-08-05 19:53:16
    python文件读写文件是最常见的IO操作... 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件...

    0.背景知识 & IO操作的类型

    • python文件读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。
    • 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。
    • 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)

    常见的IO操作的类型如下:

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


    1.常规方式:读取文件-----open()


    step1: 打开

    
    f = open( '/Users/michael/test.txt', 'r' )
    
    
    • r 表示读取文件,我们就成功地打开了一个文件
    • 但是, 如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在,错误情况如下:
    
    f=open('/Users/michael/notfound.txt', 'r')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    FileNotFoundError: [Errno 2] No such file or directory: '/Users/michael/notfound.txt'
    
    

    step2: 读取

    如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:

    
    f.read()
    'Hello, world!'
    
    

    step3: 关闭

    最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

    
    f.close()
    
    

    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:

    最终方案:

    
    try:
    	f = open('/path/to/file', 'r')
    	print(f.read())
    finally:
    	if f:
    		f.close()
    		
    


    2.推荐方式:读取文件-----With Open

    1).读取方式

    每次如果都按照如上最终方案去写的话,实在太繁琐。Python引入了with语句来自动帮我们调用close()方法
    重点:!!!with 的作用就是自动调用close()方法 !!!

    
    with open( '/path/to/file', 'r' ) as f:
    	print( f.read() ) 
    
    # 这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法
    	
    

    f.read(): 读取全部文件内容
    f.read(size): 每次读取size个字节内容
    f.readline(): 每次读取一行的内容
    f.readlines(): 读取全部内容,但结果是个list,每行内容是一个元素


    如果遇到超大文件,需要注意:

    • 调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了。
    • 要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。例如,read(1024) 每次读取1024个字节的数据内容
    • 调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
    • 如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
    
    for line in f.readlines():
    	print( line.strip() ) 
    
    
    # 读取文件之后,文字末尾会出现'\n'
    # strip() 函数中可以把目标内容line里面所有的空格,空行等都删除掉,只剩余文字内容
    


    2).常见的坑

    这里写图片描述

    读取静态文件的函数,最好不要写相对路径!!!

    (1)如上图,Fold001文件夹下面有个read_file.py文件,这个文件读取hello.txt文件,代码如上图,这样可以正常引用
    (2)但如果引用静态文件的函数,被其他函数再次调用的时候。 例如被Fold002里面的函数read.py调用,那么readfile()函数相当于是在read.py所在目录执行的,那么静态文件hello.txt相对于read.py的路径,就不是上图的路径了,否者会运行会报错,如下

    这里写图片描述



    3.写入内容----open()函数

    写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:

    
    f = open('/Users/michael/test.txt', 'w')
    f.write('Hello, world!')
    f.close()
    
    

    open函数使用注意地方:

    • 你可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。
    • 当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。
    • 只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险


    4.写入内容----- With Open函数

    
    with open('/Users/michael/test.txt', 'w') as f:
    	f.write('Hello, world!')
    	
    

    要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码字符编码



    5.打开非utf-8编码的文件

    要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:

    
    with open('/Users/michael/gbk.txt', 'r', encoding='gbk') as f:
        f.read()
    	
    
    • 遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。
    • open()函数还接收一个errors参数,errors=‘ignore’ 表示遇到编码错误的时候直接忽略
    
    with open('/Users/michael/gbk.txt', 'r', encoding='gbk',errors='ignore') as f:
        f.read()
        
    


    6.打开二进制文件

    前面讲的默认都是读取文本文件,并且是UTF-8编码的文本文件。要读取二进制文件,比如图片、视频等等,用’rb’模式打开文件即可:

    
    with open('/Users/michael/test.jpg', 'rb') as f:
        f.read()
    
    #  b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...'            十六进制表示的字节
    
    
    展开全文
  • Excel 2016 打开后空白的解决方法

    万次阅读 多人点赞 2019-06-29 14:04:37
    最近使用Excel 2016时遇到一个这样的状况,就是双击打开一个有内容的xlsx表格后显示空白,用管理员身份打开也是一样,这里总结一下解决方法: 说明:Office 2016在安装时会默认安装在系统盘,都不给修改安装位置的...

    最近使用Excel 2016时遇到一个这样的状况,就是双击打开一个有内容的xlsx表格后显示空白,用管理员身份打开也是一样,这里总结一下解决方法:

    说明:Office 2016在安装时会默认安装在系统盘,都不给修改安装位置的机会,我的安装位置是做了修改的(修改Office 2016安装位置的方法:https://blog.csdn.net/B2345012/article/details/97559229),安装位置可能与诸位的不同,所以在下面的路径中,只修改需要改动的地方即可。

    打开后的文件是这样的:

    解决方法:

    修改注册表:使用快捷键Windows + R进入运行,输入regedit,然后确定回车进入到注册表编辑器

    开始找要修改的位置:HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command  (如果一个一个找你嫌麻烦就直接复制这个位置,粘贴到图中红色粗线框的位置后回车),在右边蓝色粗线框中默认上双击:

    双击默认打开编辑字符串:

    数值数据中最后的 /dde 修改为 "%1" 后确定,即将"E:\SoftwareInstallation\Microsoft Office 2016\Microsoft Office\Root\Office16\EXCEL.EXE" /dde 修改为"E:\SoftwareInstallation\Microsoft Office 2016\Microsoft Office\Root\Office16\EXCEL.EXE" "%1"(注意"%1"和前面之间有空格,双引号是英文状态的):

    修改完了之后再去打开文件试试是不是有内容了:

    补充:打开后缀为.xlsx文件有内容,打开后缀为.xls文件后是空白:

    Excel 2007及以下版本创建的文件后缀是.xls,而Excel 2007以上版本创建的文件后缀是.xlsx,Excel 2016有时打开.xlsx文件时有内容,但是打开.xls文件后没有内容,其解决方法也是需要修改注册表:

    解决方法:

    注册表编辑器中找到路径HKEY_CLASSES_ROOT\.xls,修改其中的默认项,将默认项的值Excel.Sheet.8修改为Excel.Sheet.12即可:

    亲测有效!

    展开全文
  • Windows10右键添加“在此处打开命令窗口”

    万次阅读 多人点赞 2017-12-16 20:27:55
    由于现在Win10默认右键只有Powershell,所以为了以后方便使用就把右键添加“在此处打开命令窗口”的代码分享出来。(#^.^#) 效果 第一个是在 桌面 / 文件夹窗口中 / 选中文件夹上 直接点击右键,显示“在此处打开...

    今天跑代码时用到了Powershell,有一个环境变量死活都找不到,无奈只好重新回到cmd命令行测试,结果立马就跑通了。-_-||
    由于现在Win10默认右键只有Powershell,所以为了以后方便使用就把右键添加“在此处打开命令窗口”的代码分享出来。(#.#)

    效果

    第一个是在 桌面 / 文件夹窗口中 / 选中文件夹上 直接点击右键,显示“在此处打开命令窗口”选项,如图:
    这里写图片描述
    第二个是在 桌面 / 文件夹窗口中 / 选中文件夹上 按住Shift键点击右键,同时显示“在此处打开命令窗口”和“在此处打开Powershell窗口”两个选项,如图:
    这里写图片描述

    具体步骤

    第一步:新建一个txt文件,命名为OpenCmdHere.txt,注意设置编码格式为ANSI
    第二步:在文件中输入如下代码,并保存

    =====2018.8.28更新 ======
    根据@ZhangTianrongUnique 和 @水的表层 反馈,将代码修改如下:
    新版:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\Directory\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Directory\shell\OpenCmdHere\command]
    @="cmd.exe /s /k pushd \"%V\""
    
    [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere\command]
    @="cmd.exe /s /k pushd \"%V\""
    
    [HKEY_CLASSES_ROOT\Drive\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Drive\shell\OpenCmdHere\command]
    @="cmd.exe /s /k pushd \"%V\""
    
    [HKEY_CLASSES_ROOT\LibraryFolder\background\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\LibraryFolder\background\shell\OpenCmdHere\command]
    @="cmd.exe /s /k pushd \"%V\""
    

    原始版本:
    这种是先调用powershell,通过powershell打开cmd

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\Directory\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Directory\shell\OpenCmdHere\command]
    @="PowerShell -windowstyle hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\""
    
    [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere\command]
    @="PowerShell -windowstyle hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\""
    
    [HKEY_CLASSES_ROOT\Drive\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\Drive\shell\OpenCmdHere\command]
    @="PowerShell -windowstyle hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\""
    
    [HKEY_CLASSES_ROOT\LibraryFolder\background\shell\OpenCmdHere]
    @="在此处打开命令窗口"
    "Icon"="cmd.exe"
    
    [HKEY_CLASSES_ROOT\LibraryFolder\background\shell\OpenCmdHere\command]
    @="PowerShell -windowstyle hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\""
    

    第三步:更改文件后缀名为reg,弹出的提示点确认。
    第四步:双击OpenCmdHere.reg文件运行,弹出的提示点确认,修改注册表就大功告成了!

    展开全文
  • pkl是什么类型的文件?怎么来打开它? pkl格式的文件是python用于保存文件用的。...博主之前呢也踩了个小坑呢,就是在打开文件的时候用的是r,r是用来打开文本类型文件的,我要打开的是二进制类型的文件,需要用rb。

    一说 pkl 很容易想到王者荣耀的 kpl 比赛,哈哈!
    pkl 格式的文件是 python 用于保存文件用的。

    本文的重点是怎么打开这类文件,请看大屏幕!

    博主之前呢也踩了个小坑呢,就是在打开文件的时候用的是 rr 是用来打开文本类型文件的,我要打开的是二进制类型的文件,需要用 rb。因为文件呢主要分为这两种文本类型的和二进制类型。你在用的时候要看打开的文件是什么类型的,别用错了!

    # -*- coding: UTF8 -*-
    
    # cPickle是python2系列用的,3系列已经不用了,直接用pickle就好了
    import pickle
    
    # 重点是rb和r的区别,rb是打开2进制文件,文本文件用r
    f = open('itchat.pkl','rb')
    data = pickle.load(f)
    print(data)
    

    下面这个图是我当时用 itchat 库控制微信的时候生成的文件,适用于存储接收到的消息的,打开效果图如下:
    在这里插入图片描述
    喜欢的点个赞❤吧!

    展开全文
  • 每次打开Excel(WPS、Office都会出现,当前版本是Office2016)文件都会出现两个窗口,一个是空白的sheet1,,另一个是自己的文档,让小编是在很烦,因为每次打开一个文件就相当于打开两个,还会让Excel打开速度变慢,...
  • 打开的方式才能打开。 虽说能够打开文件,但是对于咱们这种追求完美的人来讲,怎么能容忍某种方式无法使用呢? 因此,通过搜索引擎搜索问题,查看解决方案,以下是本人尝试过的方法及其结果: 1. 视图 --> ...
  • db文件如果用记事本或者Notepad++打开,会显示乱码,改变编码不能解决问题,如果用UltraEdit打开,可以看到进制数据,但是无意义的。 正确的方法有两种: (1)用sqlitespy打开,下载网址为:...
  • 修改Jupyter Notebook的默认打开目录 Jupyter启动之后默认打开的是C盘目录,如下: 想要打开其他盘符的文件无法实现,如D、E、F盘目录下的文件。现有解决办法如下,无需修改Jupyter Notebook的默认打开路径。 ...
  • ubuntu怎样打开终端(方法5种)

    万次阅读 多人点赞 2017-09-29 15:20:20
    虽然这不是一编技术经验,但是想起来小编刚接触ubuntu的时候也不会打开终端,所以今天小编就给一些玩ubuntu的新手们,分享一下经验。 怎样打开终端 (方法1) 1 首先在桌面任意空白处,按CTRL+ALT+T ...
  • 使用微信打开网址时,无法在微信内打开常用下载软件,手机APP等。网上流传的各种微信打开下载链接,微信一更新基本失效。大家常用的方法是,弹出一个遮罩提示用户在新的浏览器窗口打开,再也不用管微信如何的更新。 ...
  • md文件的正确打开方式

    万次阅读 2019-06-01 01:16:49
    常常会遇到md格式的文件,默认打开方式是记事本,但是打开后不利于阅读,体验很差。 直到今天才明白,正确打开md文件是一件多么美妙的事情!!! 可以使用**Notepad++**来打开,该软件在编程方面也很好用,推荐使用...
  • python模拟打开Google浏览器并打开网页
  • 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写) w+与r+区别: r+:可读可写,若文件不存在,报错;w+: 可读可写,...
  • 翻译自:5 Ways to Run Powershell as Administrator in Windows 10方式1:在Cortana搜索栏中打开带管理员权限的PowerShellWindows 10的任务栏自带了Cortana搜索框。只需在搜索框中输入powershell。在出来的搜索结果...
  • 在删除文件夹的时候,可能会遇到文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开,请关闭该文件夹或或文件,然后重试。这类无法关闭删除文件夹的情况,如下图所示。 解决这个的...
  • NotePad 打开文件 出现中文汉字乱码 解决办法 现象: 出现中文汉字乱码: 解决办法: 先别着急用notepad修改编码 1. 用windows系统自带记事本打开, 2 ,选择文件另存为 3. 如果看到:编码是 UTF-8 ...
  • 如何打开ipynb文件

    万次阅读 多人点赞 2017-06-11 22:43:04
    最近在学习《TensorFlow 实战GoogLe深度学习框架》这本书,发现里面提供的源码后缀是.ipynb,而不是.py,那么我们应该怎么打开.ipynb后缀的文件呢? ipynb,即ipython notebook,需要用ipython notebook打开,...
  • vscode 打开终端快捷键

    万次阅读 多人点赞 2018-03-12 10:17:34
    使用vscode的过程中,我们可能会用到终端,虽然系统自带有,但是还要另外打开,有点不方便,vscode中就有这个功能,打开方法1. 使用快捷键: ctrl + · 即可;注意那个点是键盘上 esc 下面的那个;或者:2. 选择...
  • 点击底部的图标即可快速打开 找不到的就用快捷键打开
  • How to change the default programs in ...1.例如有文件 a.shp文件,需要以后双击默认使用notepad++打开。但是每次双击,都要弹出选择框选择打开方式里面的Notepad++。不能直接打开,很烦很烦有木有。类似这样: ...
  • 1.首先打开Anoconda Prompt,输入命令jupyter notebook --generate-config,系统会自动产生一个名为jupyter_notebook_config.py的文件,并且Anoconda Prompt窗口中会给出文件的路径。 2.打开jupyter_notebook_...
  • H5打开APP技术总结

    万次阅读 多人点赞 2018-01-30 11:49:37
    在H5页面打开APP的方法一般有两种,在IOS 9以前,一般使用的技术是URL Scheme。这种方式虽然可自定义程度很高,能够巧妙地实现很多跳转,但弊端也很明显:我们只能通过 scheme://example 这种格式的链接来实现跳转,...
  • 今天安装好win10后发现打开图片的默认程序是win10自带的画图工具,非常不方便,并且右键选择打开方式里边也找不到默认的“照片查看器”。百度搜索了一下关于win10打开方式恢复默认照片查看器的方法,虽然有用但非常...
  • VS2019无法打开源文件

    万次阅读 多人点赞 2019-10-21 11:51:16
    前言 ...刚一开始就遇到大问题,从网上摘了一个socket通信的程序后,疯狂标红,无法打开源文件。 最终在项目 -》 属性 -》 C/C++ -》常规 中的使用Windows运行时扩展,选择是就解决了这个问题。 ...
  • 如何打开.ipynb文件

    万次阅读 多人点赞 2018-05-04 18:02:59
    最近碰到文件名后缀为.ipynb文件,起初没太在意这种文件格式,用Notepad++打开之后看到也是类似于JSON格式的信息,以为也是为其他的一些文件服务的(类似于配置一些HTML文件的配置文件)。但是后来才发现这也是一种...
  • 初到公司交接了公司的一个互动软件项目,但在项目移植和开发中却出现了“无法打开源文件”的问题。那么出现这种问题,一般是因为自己项目的文件路径在项目中没有设置正确。解决方法1.明确自己项目中解决方案的配置和...
  • 在实际的开发过程中,经常会遇到需要刷新当前页面或者打开新页面的需求,根据具体情况我们会选择不同的打开方式,今天就简单记录一下两种方式的写法: 1.点击某一个链接之后跳转到新页面显示 window.open('...
  • 现在淘宝网站貌似升级了,安卓开发时,用webview打开淘宝网站时会自动打开掏宝app。(其他浏览器也是这样)。如何阻止打开淘宝网站时自动打开淘宝app。
  • 宝塔面板能打开,但网站不能打开解决办法。ping也能ping得通网址 清理了几个大的log文件(大概5-6G)后,重启发现网站登不了, ssh能进去,宝塔也能打开。服务器重启n次依旧解决不了,最后就把网站数据库停止后重启...
  • 生活中经常遇到这样的情况,删除文件夹时弹出【文件夹或文件已在另一程序中打开】的提示,重试往往是不管用的。希望下面的教程能帮到大家。 如果你的提示是这样的,请进入教程! 打开任务管理器(可按快捷键找到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,392,756
精华内容 557,102
关键字:

打开