python 读取文件如何才能直接读取iphone中的文件?

Python引用(import)文件夹下的py文件的方法
转载 & & 投稿:junjie
这篇文章主要介绍了Python引用(import)文件夹下的py文件的方法,Python中比较特别,导入文件夹下的py文件,则这个目录下必须要有一个__init__.py文件才可,需要的朋友可以参考下
Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行。要包含目录里的文件,PHP中只需要给对路径就OK。Python中则不同,下面来看看这个例子。
目录结构:
a.py 要 import dir目录下的 b.py 文件。a.py代码如下:
# coding=utf-8
"import dir 目录下的 b.py 文件"
import dir.b
print dir.b.name
执行 a.py 报错
提示找不到这个模块的名字 dir.b 。通过查找官方文档,发现要包含目录下的文件时需要在目录下声明一个__init__.py文件,即使这个文件是空的也可以。当然这个文件也可以初始一些数据。
于是在 dir 下新建 __init__.py文件,目录结构如下:
重新执行a.py,一切OK!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在Python程序中进行文件读取和写入操作的教程
转载 & & 作者:廖雪峰
这篇文章主要介绍了在Python程序中进行文件读取和写入操作的教程,是Python学习当中的基础知识,需要的朋友可以参考下
读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
&&& 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&
IOError: [Errno 2] No such file or directory: '/Users/michael/notfound.txt'
如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:
&&& f.read()
'Hello, world!'
最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:
&&& f.close()
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:
f = open('/path/to/file', 'r')
print f.read()
但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:
with open('/path/to/file', 'r') as f:
print f.read()
这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。
调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉
file-like Object
像open()函数返回的这种有个read()方法的对象,在Python中统称为file-like Object。除了file外,还可以是内存的字节流,网络流,自定义流等等。file-like Object不要求从特定类继承,只要写个read()方法就行。
StringIO就是在内存中创建的file-like Object,常用作临时缓冲。
二进制文件
前面讲的默认都是读取文本文件,并且是ASCII编码的文本文件。要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可:
&&& f = open('/Users/michael/test.jpg', 'rb')
&&& f.read()
'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
要读取非ASCII编码的文本文件,就必须以二进制模式打开,再解码。比如GBK编码的文件:
&&& f = open('/Users/michael/gbk.txt', 'rb')
&&& u = f.read().decode('gbk')
u'\u6d4b\u8bd5'
&&& print u
如果每次都这么手动转换编码嫌麻烦(写程序怕麻烦是好事,不怕麻烦就会写出又长又难懂又没法维护的代码),Python还提供了一个codecs模块帮我们在读文件时自动转换编码,直接读出unicode:
import codecs
with codecs.open('/Users/michael/gbk.txt', 'r', 'gbk') as f:
f.read() # u'\u6d4b\u8bd5'
写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:
&&& f = open('/Users/michael/test.txt', 'w')
&&& f.write('Hello, world!')
&&& f.close()
你可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
要写入特定编码的文本文件,请效仿codecs的示例,写入unicode,由codecs自动转换成指定编码。
在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Python 可以直接读取表单上传的文件吗? - V2EX
Python 可以直接读取表单上传的文件吗?
164 天前 &miniyao
通过表单上传的文本 abc.txt 文件,然后可以直接读取吗?
file = open(form.file.data, 'r')
还是说需要先创建一个文件对象,再读取这个文件:
file = open(os.path.join(filepath, filename), 'r')
上传的文件如果可以直接从内存里读取,就避免了在本地创建一个文件对象的步骤了,是这样的吗?(直接从内存中读取,减少一次硬盘 io 的操作,降低读写出错的概率)
1260 次点击所在节点 &
jtsai164 天前内存资源比硬盘资源贵
Morriaty164 天前表单上传的是 bytes,可以用 StringIO.StringIO 读取,剩下的和 file 类似。
Librazy164 天前@ 但内存是无论如何必须用的,增加一次磁盘 io 的过程反而可能会增加内存占用的时间。当然如果是大文件必须放到磁盘处理的话另当别论。
读写出错的概率这个不用考虑,主要是考虑你现在服务的瓶颈在内存还是在磁盘 io。内存瓶颈那就流式写到磁盘流式处理,io 瓶颈那就尽可能在内存搞定。
jtsai164 天前不是很明白 如果数据要直接在内存操作 那为什么不直接进行数据 要传输文件,内存一般当作缓存,文件的功能是可复用
miniyao164 天前@ 用 StringIO 是不是完了,还要等系统自动回收垃圾?用 file 直接 close()释放内存是不是更快一点?
第 1 页 / 共 1 页&
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到
上打开本讨论主题的完整版本。
是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
is a community of developers, designers and creative people.Python文件处理:读取文件_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Python文件处理:读取文件
来源:oschina.net&
作者:haigou20
在python中读取文件需要用到open打开一个文件,并保存到一个对象文件中,代码如下:
#打开文件,并存入一个名为data的文件对象data = open('nyl_sites.txt')
#遍历每一行数据, each_item为每行的字符串for each_item in data:&#使用find方法查找,当前行字符串是否包含','&if not each_item.find(','):& #找不到,直接输出& print each_item&else:& '''& 找到了,使用split将字符串分割,保存到列表当中& 通过以下方式,将列表中的元素分别保存到不同变量中& ===============================================& 看到这里,学过php的童靴应该比较熟悉,& 其实在php编程也是通过这样的方式将数组元素保存到不同的变量中& 代码如下:& &$row = array('1','小名',24);& &list($id, $name, $age) = $& '''& (site_id,site_name,region) = each_item.split(',')& print site_id+'-'+site_name+'-'+region
data.close()
有个概念性的东东要稍微提醒一下: 在不同的开发语言当中,都会有数组这个数据类型,只是部分叫法不同,在php,javascript中都叫数组,而在python当中则称之为&列表(list)&
另外,还有个地方需要说明一下:
data = open('data.txt')
在这里没有指定文件的目录,那我们怎么样才能知道当前打开的文件是在哪个目录下呢?看代码:
# 导入os库import os
# 调用getcwd()查看当前目录,与php中的getcwd()一样os.getcwd()
# 如果要更换目录,使用chdir(),然后在getcwd()查看os.chdir('D:/pydemo/files')os.getcwd()
如果不想这么麻烦也行,在open里面直接传入文件的绝对目录即可:
data = open('D:/pydemo/files/xxx.txt')
=================================================
使用此方法可以处理xls文件,前提是要将xls转换成csv,当然这是在windows平台下操作,因为python的excel库不支持windows系统,各位可以到这里去看看http://www.python-excel.org/
推荐阅读:
Python之Matplotlib画图方法
Python:使用matplotlib绘制图表
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 python读取json文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信