Python读取网页内容的艺术,python读取网页内容

Python功能键的读取方法,python功能键读取

本文实例讲述了Python功能键的读取方法。分享给大家供大家参考。具体分析如下:

先getch一下得到a,如果等于0或者224,就说明是功能键,再getch下一个得到b,那么这个功能键的扫描码就是a+(b*256)

可以看看下面这个例子:

import msvcrt
  while 1:
    if msvcrt.kbhit(): # Key pressed
      a = ord(msvcrt.getch()) # get first byte of keyscan code 
      if a == 0 or a == 224: # is it a function key
        b = ord(msvcrt.getch()) # get next byte of key scan code
        x = a + (b*256) # cook it.
        return x # return cooked scancode
      else:
        return a # else return ascii code

希望本文所述对大家的Python程序设计有所帮助。

本文实例讲述了Python功能键的读取方法。分享给大家供大家参考。具体分析如下:
先getch一下得到…

Python读取网页内容的方法,python读取网页内容

本文实例讲述了Python读取网页内容的方法。分享给大家供大家参考。具体如下:

import urllib2
#encoding = utf-8
class Crawler:
  def main(self):
    #req = urllib2.Request('http://www.baidu.com/')
    #req.add_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0)')
    #urllib2.socket.setdefaulttimeout(10) # 超时10秒
    #page = urllib2.urlopen(req)
    page = urllib2.urlopen('http://www.google.com', timeout=10)
    data = page.read()
    print data
    print len(data) #计算字节长度
if __name__ == '__main__':
  me=Crawler()
  me.main()

希望本文所述对大家的Python程序设计有所帮助。

本文实例讲述了Python读取网页内容的方法。分享给大家供大家参考。具体如下:
import urllib…

Python读取键盘输入的2种方法,python键盘输入2种

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:

1.raw_input
2.input

raw_input函数

raw_input()
函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):
复制代码 代码如下:
str = raw_input(“Enter your input: “); 
print “Received input is : “, str 

这将提示你输入任意字符串,然后在屏幕上显示相同的字符串。当我输入”Hello
Python!”,它的输出如下:
复制代码 代码如下:
Enter your input: Hello Python 
Received input is :  Hello Python 

input函数

input() 函数和raw_input()
函数基本可以互换,但是input会假设你的输入是一个有效的Python表达式,并返回运算结果。这应该是两者的最大区别。
复制代码 代码如下:
str = input(“Enter your input: “); 
print “Received input is : “, str 

这会产生如下的对应着输入的结果:
复制代码 代码如下:
Enter your input: [x*5 for x in range(2,10,2)] 
Recieved input is :  [10, 20, 30, 40] 

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:
1.raw…

Python读取环境变量的方法和自定义类分享,python环境变量

使用os.environ来读取和修改环境变量:

复制代码 代码如下:

import os

print (os.environ[“TEMP”])

mydir = “c:\\mydir”
os.environ[“MYDIR”] = mydir
print (os.environ[“MYDIR”])

pathV = os.environ[“PATH”]
print (pathV)
os.environ[“PATH”]= mydir + “;” + os.environ[“PATH”]
print (os.environ[“PATH”])

自定义的python的环境变量类:

复制代码 代码如下:

import os

class MyEnv:

  def __init__(self):
    self.envFile = “c:\\myenv.txt”
    self.envs = {}
 
  def SetEnvFile(self, filename) :
    self.envFile = filename
       
  def Save(self) :
    outf = open(self.envFile, “w”)
    if not outf:
      print (“env file cannot be opened for write!”)
    for k, v in self.envs.items() :
      outf.write(k + “=” + v + “\n”)
    outf.close()
   
  def Load(self) :
    inf = open(self.envFile, “r”)
    if not inf:
      print (“env file cannot be opened for open!”)
    for line in inf.readlines() :
      k, v = line.split(“=”)
      self.envs[k] = v
    inf.close()
   
  def ClearAll(self) :
    self.envs.clear()
   
  def AddEnv(self, k, v) :
    self.envs[k] = v
   
  def RemoveEnv(self, k) :
    del self.envs[k]
   
  def PrintAll(self) :
    for k, v in self.envs.items():
      print ( k + “=” + v )
  
if __name__ == “__main__” :
  myEnv = MyEnv()
  myEnv.SetEnvFile(“c:\\myenv.txt”)
  myEnv.Load()
  myEnv.AddEnv(“MYDIR”, “c:\\mydir”)
  myEnv.AddEnv(“MYDIR2”, “c:\\mydir2”)
  myEnv.AddEnv(“MYDIR3”, “c:\\mydir3”)
  myEnv.Save()
  myEnv.PrintAll()

使用os.environ来读取和修改环境变量: 复制代码 代码如下: import os print
(os.environ…

如何使用Python读取大文件,使用python读取

背景

最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法。

原味地址

准备工作

  我们谈到“文本处理”时,我们通常是指处理的内容。Python
将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: .read().readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而.read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。下面是read()方法示例:

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

 

  调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

  如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

for line in f.readlines():
process(line) #

  

分块读取

处理大文件是很容易想到的就是将大文件分割成若干小文件处理,处理完每个小文件后释放该部分内存。这里用了iter 和 yield

def read_in_chunks(filePath, chunk_size=1024*1024):
"""
Lazy function (generator) to read a file piece by piece.
Default chunk size: 1M
You can set your own chunk size
"""
file_object = open(filePath)
while True:
chunk_data = file_object.read(chunk_size)
if not chunk_data:
break
yield chunk_data
if __name__ == "__main__":
filePath = './path/filename'
for chunk in read_in_chunks(filePath):
process(chunk) # <do something with chunk>

 

使用With open()

with语句打开和关闭文件,包括抛出一个内部块异常。for line in f文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理,所以你不必担心大文件。

代码如下:

#If the file is line based
with open(...) as f:
  for line in f:
    process(line) # <do something with line>

 

优化

面对百万行的大型数据使用with open
是没有问题的,但是这里面参数的不同也会导致不同的效率。经过测试发先参数为”rb”时的效率是”r”的6倍。由此可知二进制读取依然是最快的模式。

with open(filename,"rb") as f: 

    for fLine in f: 

      pass  

 

测试结果:rb方式最快,100w行全遍历2.9秒。基本能满足中大型文件处理效率需求。如果从rb(二级制读取)读取改为r(读取模式),慢5-6倍。

结论

  在使用python进行大文件读取时,应该让系统来处理,使用最简单的方式,交给解释器,就管好自己的工作就行了。同时根据不同的需求可以选择不同的读取参数进一步获得更高的性能。

背景
最近处理文本文档时(文件约2GB大小),出现 memoryError
错误和文件读取太慢的问题,后来找…

发表评论

电子邮件地址不会被公开。 必填项已用*标注