[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等
1、从键盘输入
Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘。这两个函数分别是:input()和raw_input()。
Python 3中,不建议使用raw_input()函数。 input()函数可以从键盘读取的全都会转化为字符串类型。
图中可以看出 就算我们输入 123456789 input() 函数 还是完全把他看做 字符串
2、打开和关闭文件
Python提供了默认操作文件所必需的基本功能和方法。可以使用文件对象执行大部分文件操作。
一下方法为 Python内置 方法,不需要导入包。
1、打开文件
在读取或写入文件之前,必须使用Python的内置open()函数打开文件。此函数创建一个文件对象,该对象将用于调用与其相关联的其他支持方法。
在 Pycharm IDE 中 输入 open(), 然后按住 Ctrl 并且鼠标单击 open,即可查看 open 方法。
参数:
file:参数是一个字符串类型,指定要访问的文件名称
mode:确定文件打开的模式,即读取,写入,追加等。可能的值的完整列表如下表所示。 这是一个可选参数,默认文件访问模式为(r - 也就是只读)。
一般情况下 只需要 填入这两个参数即可,其他保持默认。
以下是打开文件使用的模式的列表 :
2、文件对象属性
打开一个文件并且有一个文件对象后,可以获得与该文件相关的各种信息。
以下是与文件对象相关的所有属性的列表:
3、close() 方法
文件对象的close()方法刷新任何未写入的信息并关闭文件对象,之后不能再进行写入操作。
当文件的引用对象重新分配给另一个文件时,Python也会自动关闭一个文件。但使用close()方法关闭文件是个好习惯。
语法:fileName.close()
3、读取与写入文件
文件对象提供了一组访问方法,使代码编写更方便。read()和write()方法 分别用来读取和写入文件。
1、write()方法
write()方法将任何字符串写入打开的文件。 重要的是要注意,Python字符串可以是二进制数据,而不仅仅是文本。
write()方法不会在字符串的末尾添加换行符(‘\n‘)
只需要一个参数,即需要写入的文本内容
PS.打开文件的时候需要给予写入的相关权限。
2、read()方法
read()方法用于从打开的文件读取一个字符串。 重要的是要注意Python字符串除文本数据外可以是二进制数据。
这里,传递参数 n 是从打开的文件读取的字节数。
该方法从文件的开始位置开始读取,如果 n 不指定值,则读取全文。
4、文件位置
tell()方法
用于获取文件中的当前位置; 换句话说,下一次读取或写入将发生在从文件开始处之后的多个字节数的位置。
seek(offset [,from])方法:
更改当前文件位置。 offset参数表示要移动的字节数。 from参数指定要移动字节的引用位置。
from参数:
设置为0,则将文件的开头作为参考位置。 如果设置为1,则将当前位置用作参考位置。 如果设置为2,则文件的末尾将被作为参考位置。
5、重命名和删除文件
Python os模块 提供用于执行文件处理操作(如重命名和删除文件)的方法。要使用此模块,需要先将它导入,然后可以调用任何相关的函数。
1、rename()方法
rename()方法 有两个参数,即 当前的文件名 和 新的文件名。
2、remove()方法
remove()方法 通过提供要删除的文件的名称作为参数来删除文件。
6、补充
1、Python 文件对象 的 方法
2、os模块 的 方法 (略取了一部分)
7、文件读取、写入 (配合 文件选择对话框) 代码
- # coding: utf-8
- # author: Twobox
- import wx
- import os
- class MyWin(wx.Frame):
- def __init__(self, parent, title):
- super(MyWin, self).__init__(parent=parent, title=title)
- self.wildcard = "文本文件 (*.txt)|*.txt"
- self.initUI()
- self.Show()
- def initUI(self):
- panel = wx.Panel(self)
- vbox = wx.BoxSizer(wx.VERTICAL)
- panel.SetSizer(vbox)
- hbox1 = wx.BoxSizer(wx.HORIZONTAL)
- hbox2 = wx.BoxSizer(wx.HORIZONTAL)
- vbox.Add(hbox1, proportion=0, flag=wx.EXPAND | wx.ALL, border=0)
- vbox.Add(hbox2, proportion=1, flag=wx.EXPAND | wx.ALL, border=0)
- self.fileAddress = wx.TextCtrl(panel)
- btn1 = wx.Button(panel, label="Open", id=wx.ID_OPEN)
- btn2 = wx.Button(panel, label="Save", id=wx.ID_SAVE)
- hbox1.Add(self.fileAddress, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
- hbox1.Add(btn1, proportion=0, flag=wx.EXPAND | wx.UP | wx.DOWN, border=5)
- hbox1.Add(btn2, proportion=0, flag=wx.EXPAND | wx.ALL, border=5)
- # content 内容 conter 中心
- self.content = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_DONTWRAP)
- hbox2.Add(self.content, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
- self.Bind(wx.EVT_BUTTON, self.eventButtonOpen, btn1)
- self.Bind(wx.EVT_BUTTON, self.eventButtonSave, btn2)
- def eventButtonOpen(self, event):
- wildcard = self.wildcard
- dlg = wx.FileDialog(parent=self, message="Please Select File",defaultDir=os.getcwd() ,wildcard=wildcard, style=wx.FD_OPEN)
- if dlg.ShowModal() == wx.ID_OK:
- # dlg.SetPath("1.txt") # 可以更改选择好的文件地址
- # print(dlg.GetPath())
- self.fileAddress.SetValue(dlg.GetPath())
- with open(dlg.GetPath(), "r") as f:
- self.content.SetValue(f.read())
- dlg.Destroy()
- def eventButtonSave(self, event):
- wildcard = self.wildcard
- dlg = wx.FileDialog(parent=self, message="Please ......", defaultDir=os.getcwd(), wildcard=wildcard, style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
- if dlg.ShowModal() == wx.ID_OK:
- filePath = dlg.GetPath()
- self.fileAddress.SetValue(filePath)
- with open(filePath, "w") as f:
- f.write(self.content.GetValue())
- dlg.Destroy()
- def main():
- app = wx.App()
- MyWin(None, "File Dialog - Test")
- app.MainLoop()
- if __name__ == '__main__':
- main()
8、后言
还比较全,一般以后对文件的大部分操作都可以完成了。
O.O 昨天 忘记发博客了(其实是浪了)。
作者参考的资料:http://www.yiibai.com/python/python_files_io.html
转载请注明出处 (●'◡'●):http://www.cnblogs.com/Twobox/
2017-08-25 14:55:29
[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等的更多相关文章
- Python重命名和删除文件
Python重命名和删除文件: rename(当前的文件名,新文件名): 将当前的文件名修改为新文件名 程序: # os.rename('旧名字',’新名字‘) import os os.rename ...
- ( 转)Ubuntu下创建、重命名、删除文件及文件夹,强制清空回收站方法
Ubuntu下创建.重命名.删除文件及文件夹,强制清空回收站方法 mkdir 目录名 ——创建一个目录 rmdir 空目录名 ——删除一个空目录 rm 文件名 文件名 ——删除一个文件或多个文件 rm ...
- PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink
php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...
- PHP文件和目录操作-----复制、移动、重命名、删除文件
PHP通过copy()函数来复制一个文件.用法如下: bool copy(string $source, string $dest) 其中$source是源文件的路径,$dest是目的文件的路径.函数 ...
- Java创建、重命名、删除文件和文件夹(转)
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...
- 如何在Linux下重命名多个文件
在Linux中,当你想要改变一个文件名,使用mv命令就好了.然而mv不能使用通配符重命名多个文件.可以用sed.awk或者与xargs结合使用来处理多个文件的情况.然而,这些命令行即繁琐又不友好,并且 ...
- Win10家庭版重命名Administrator用户文件夹
需要将Windows系统默认的Administrator帐号文件夹改名为我们自定义的名称.. 但是Win10家庭版找不到组策略gpedit.msc 根据微软官方有关Win10各版本操作系统中对于组策略 ...
- Linux命令技巧:如何在Linux下重命名多个文件
我知道我可以用mv命令重命名文件.但是当我想重命名很多文件怎么办?如果为每个文件都这么做将会是很乏味的.有没有办法一次性重命名多个文件? 在Linux中,当你想要改变一个文件名,使用mv命令就好了.然 ...
- Python 3 学习笔记之——键盘输入和读写文件
1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...
随机推荐
- HDU 1698 Just a Hook(线段树成段更新)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目: Problem Description In the game of DotA, P ...
- 细说Handler
今天来说说Android一个重要类吧:Handler (我写的博客风格不适合新手,因为我讨厌新手教学,我都是直奔主题,不交代前因后果) 大家都知道Handler的用法一般是线程间的通讯,当然,一个线程 ...
- CDH版本的oozie安装执行bin/oozie-setup.sh prepare-war,没生成oozie.war?
不多说,直接上干货! 前期博客 Oozie安装部署 问题描述 bin/oozie-setup.sh prepare-war 解决办法 [hadoop@bigdatamaster bin]$ pwd / ...
- 初涉算法——C++
一.sstream头文件运用 题目:输入数据的每行包括若干个(至少一个)以空格隔开的整数,输出每行中所有整数之和. #include<iostream> #include<cstri ...
- Python基础之常用模块(一)
模块本质就是一个.py文件,在安装目录下的lib文件夹下可以看到 模块分为三个部分:内置模块(存在于解释器中),第三方模块(lib文件夹下),自定义模块(自己定义的) 1.time模块 import ...
- 服务器Hadoop+Hive搭建
出于安全稳定考虑很多业务都需要服务器服务器Hadoop+Hive搭建,但经常有人问我,怎么去选择自己的配置最好,今天天气不错,我们一起来聊一下这个话题. Hadoop+Hive环境搭建 1虚拟机和系统 ...
- 接口工具-POSTMAN
前端的一项总要工作就是测试接口,当然这也可能是你们后台人员做的.不管怎样,都需要测试接口,那么就来介绍一款谷歌浏览器接口测试插件,postman.首先你要去谷歌的应用商店,搜索这个插件,(需要FQ), ...
- 35. leetcode 501. Find Mode in Binary Search Tree
501. Find Mode in Binary Search Tree Given a binary search tree (BST) with duplicates, find all the ...
- HDU5734 Acperience(数学推导)
Problem Description Deep neural networks (DNN) have shown significant improvements in several applic ...
- Handler实现线程之间的通信-下载文件动态更新进度条
1. 原理 每一个线程对应一个消息队列MessageQueue,实现线程之间的通信,可通过Handler对象将数据装进Message中,再将消息加入消息队列,而后线程会依次处理消息队列中的消息. 2. ...