1. 程式人生 > >全局變量 urllib模塊 json模塊

全局變量 urllib模塊 json模塊

pycharm rtt _file__ info 必須 地址 老男孩 是否 一個

1、vars() 查看一個.py文件中的全局變量

print(vars())     #重點  __name__‘: ‘__main__            ‘__file__‘: ‘C:/Users/lenovo/PycharmProjects/老男孩/pppppppp.py‘  

{‘__spec__‘: None, ‘__name__‘: ‘__main__‘, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__file__‘: ‘C:/Users/lenovo/PycharmProjects/老男孩/pppppppp.py‘,
‘__package__‘: None, ‘__cached__‘: None, ‘__doc__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x000000AFF7E53E10>}

1> __doc__ 查看.py文件的註釋

2> __file__ 本身.py文件的絕對路徑

import os
print(__file__)                                #當前路徑
print(os.path.dirname(__file__))      #上一級目錄

C:/Users/lenovo/PycharmProjects/老男孩/pppppppp.py
C:/Users/lenovo/PycharmProjects/老男孩 

把一個路徑導入到sys.pash中

import os,sys
print(sys.path)            #查看導入模塊時所尋找的路徑
print(__file__)
a=os.path.dirname(__file__)      #利用__file__獲取當前文件的絕對路徑
print(os.path.dirname(__file__))   #利用os.pash.dirname(__file__路徑)得到當前絕對路徑的上一級目錄
print(os.path.join(a,"mokuai"))    #利用os.pash.join()把倆個路徑拼接起來
b=os.path.join(a,"mokuai")
sys.path.append(b)           #把拼接後的路徑加到尋找模塊時查看的路徑中
print(sys.path)             #查看當前需要導入模塊時所尋找的路徑


[‘C:\\Users\\lenovo\\PycharmProjects\\老男孩‘, ‘C:\\Users\\lenovo\\PycharmProjects\\老男孩‘, ‘E:\\Python35\\python35.zip‘, ‘E:\\Python35\\DLLs‘, ‘E:\\Python35\\lib‘, ‘E:\\Python35‘, ‘E:\\Python35\\lib\\site-packages‘]
C:/Users/lenovo/PycharmProjects/老男孩/pppppppp.py
C:/Users/lenovo/PycharmProjects/老男孩
C:/Users/lenovo/PycharmProjects/老男孩\mokuai
[‘C:\\Users\\lenovo\\PycharmProjects\\老男孩‘, ‘C:\\Users\\lenovo\\PycharmProjects\\老男孩‘, ‘E:\\Python35\\python35.zip‘, ‘E:\\Python35\\DLLs‘, ‘E:\\Python35\\lib‘, ‘E:\\Python35‘, ‘E:\\Python35\\lib\\site-packages‘, ‘C:/Users/lenovo/PycharmProjects/老男孩\\mokuai‘]

3>__name__ 如果是在自己的.py文件中__name__=="__main__",而如果是在一個文件中導入另外一個文件的話,打印另外一個文件的__name__就成了那個文件的文件名

常利用__name__=="__main__"來定義一個主文件

import pppppppp
print(__name__)
print(pppppppp.__name__)

__main__
pppppppp

定義主文件

if __name__=="__main__":
    print("123")

2、urllib模塊

import urllib                    #導入urllib模塊
from urllib import request    #導入urllib中request方法            f=request.urlopen("http://ing.cnblogs.com/")  #輸入網址發送請求 a=f.read().decode("utf-8")            #輸入並編碼 print(a)

查詢各地天氣的代碼

import urllib                    #導入urllib模塊
from urllib import request                  #導入urllib中request方法           
f=request.urlopen("http://www.weather.com.cn/adat/sk/101050101.html")  #輸入網址發送請求
a=f.read().decode("utf-8")            #輸入並編碼
print(a)

3、json模塊

json,用於字符串 和 python數據類型間進行轉換

Json模塊提供了四個功能:dumps、dump、loads、load

json.loads()用於將字符串形式的字典,列表轉換成相應的字典,列表(元祖不可以,應為其他語言中沒用元祖)

import json
a="[1,2,3,4]"
b=‘{"k1":1,"k2":2}‘      #當字符串為字典時{}外面必須是‘‘單引號{}裏面必須是""雙引號
print(json.loads(a))
print(b)

[1, 2, 3, 4]
{"k1":1,"k2":2}

json.dumps()字典,列表轉換成相應的字符串(元祖轉換的時候轉成字符串形式的列表)

import json
a=[1,2,3,4]
b={"k1":1,"k2":2}
print(json.dumps(a))
print(json.dumps(b))

[1, 2, 3, 4]
{"k1": 1, "k2": 2}

json.dump()把一個字典或列表寫到一個文件中寫成字符串的形式

import json
a=[1,2,3,4]
b=json.dump(a,open("db","a"))

json.load()把一個文件中的字符串以字典或列表的形式讀出來

import json
b=json.load(open("db","r"))
print(b)

4.request(請求的意思)

用於發送http請求的,用python模擬瀏覽器瀏覽網頁

import requests                                  #導入request模塊
a=requests.get("http://www.weather.com.cn/adat/sk/101050101.html")    #發送url地址並獲取返回值a
a.encoding="utf-8"                                #把獲取到的內容進行編碼
b=a.text                                      #text返回的內容
print(b)

5、XML

獲取QQ是否在線

import requests                                                          #導入request模塊
a=requests.get(‘http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508‘) #發送請求並獲取返回值
a.encoding="utf-8"                                                        #編碼
b=a.text                                                              #讀出內容
print(b)                                                              #查看讀出的內容屬於什麽類型
from xml.etree import ElementTree as f                                            #獲取的字符串是xml格式的所以用xml方法
a=f.XML(b)                                                             #用xml進行提取內容
c=a.text                                                              #提取到內容後進行讀取
print(c)

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://WebXml.com.cn/">Y</string>
Y

列車時刻表

import requests
a=requests.get(‘http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=k234&UserID=‘)
a.encoding="utf-8"
b=a.text
print(b)
from xml.etree import ElementTree as f
a=f.XML(b)
print(a.tag)                     #獲取第一個節點的標簽 for i in a.iter("TrainDetailInfo"):       #找到某一類節點進行循環 通過iter叠代TrainDetailInfo 我們可以把它看成一個列表 print(i)                     #通過打印獲取一個叠代的對象 print(i.tag,i.attrib)             #i.tag是獲取節點的標簽,i.attrib是獲取標簽的屬性 print(i.find("TrainStation").text)     #在TrainDetailInfo節點下找TrainStation標簽 print(i.find("StartTime").text)       #在TrainDetailInfo節點下找StartTime標簽



def iter(self, tag=None):
  在當前節點的子孫中根據節點名稱尋找所有指定的節點,並返回一個叠代器(可以被for循環)。
 
技術分享 View Code
import requests
a=requests.get("http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=K234&UserID=")
a.encoding="utf-8"
b=a.text
print(b)
from xml.etree import ElementTree as f
c=f.XML(b)
for i in c.iter("TrainDetailInfo"):
    print(i)
    print(i.tag,i.attrib)
    print(i.find("TrainStation").text,i.find("ArriveTime").text,i.find("StartTime").text,i.find("KM").text)

上海(車次:K234\K235) None 11:12:00 0
昆山 11:45:00 11:48:00 49
蘇州 12:12:00 12:16:00 84
無錫 12:44:00 12:55:00 126
常州 13:22:00 13:26:00 165
鎮江 14:13:00 14:16:00 237
南京 15:04:00 15:16:00 301
蚌埠 17:27:00 17:50:00 485
徐州 19:38:00 19:58:00 649
商丘 22:12:00 22:17:00 795
開封 23:49:00 23:53:00 926
鄭州 00:37:00 01:14:00 998
新鄉 02:20:00 02:22:00 1078
鶴壁 03:01:00 03:03:00 1144
安陽 03:33:00 03:36:00 1185
邯鄲 04:11:00 04:16:00 1245
邢臺 04:47:00 04:51:00 1297
石家莊 06:05:00 None 1406

全局變量 urllib模塊 json模塊