Python新手問題集錦|路徑問題 編碼問題(utf-8,gbk)等
經常看到群裡python新同學問一些簡單的問題,有些實在簡單老鳥不太願意答,因為一句說不清楚,但是對於新手來說也是一個困擾,所以正好閒暇片刻就來隨筆一下,時間倉促若有錯誤請指正。
一、路徑問題
-
1.1 相對路徑(地址)
-
“
./
” 表示當前檔案所在目錄下,比如:“./pic.jpg” 表示當前目錄下的pic.jpg的圖片,而實際使用時"./"可以省略。 -
“
../
” 表示當前檔案所在目錄下的上一級目錄,比如:“../images/pic.jpg” 表示當前目錄下的上一級目錄下的images資料夾中的pic.jpg的圖片。
-
-
1.2 絕對路徑(地址)
-
相對於磁碟的位置去定位檔案的地址,比如:"
C:\Users\Desktop\images\001.jpg
/home/python/Desktop/images/001.jpg
”,指的是Linux系統中桌面上images資料夾裡面的001.jpg圖片檔案。注:“/
”表示Linux系統的根目錄。
-
-
1.3 不同作業系統的格式差異(這裡以window和LInux系統舉例):
-
最主要的差別就是Linux系統下是:“
/
” -
windows系統下是“
\
”
-
-
1.4 上面是不同作業系統對檔案路徑的表示方式差異,使用Python的時候還會遇到一個問題:
-
“
\
”在python中有特殊的含義,表示轉義字元。所以比如“\n
\a
\b
”等等,在windows系統下存在一個問題:需要轉義,而轉義字元就是“\
”。所以,就變成了雙反斜槓,類似"C:\\a\\b
"來表示才行。 -
在Linux系統中則不存在這個問題。
-
補充:windows系統中執行python開啟檔案的時候存在一個原生字串r的解決方案:
r“\n \a \b
”則解決了這個問題。只需要在路徑前面加上r或R。
-
-
1.5 補充,有些新新手使用windows下的cmd終端來執行桌面上的python檔案"xx.py",偶爾發現找不到路徑執行不了,就是因為移動了檔案的位置,而cmd預設進入的不是桌面路徑。
-
所以需要cd到對應的路徑,具體命令:
cd C:xxxxx\xxxxx\xx.py
python xx.py
來呼叫python直譯器執行xx.py檔案。 -
或者:在當前xx.py檔案路徑中,按住shitf + 滑鼠右鍵, 找到命令"在此處開啟powershell視窗"或者"在此處開啟cmd視窗",然後再
python xx.py
來呼叫python直譯器執行xx.py檔案。
-
二、Python編碼問題
-
2.1 這個問題也是一個萬年的老問題,python3目前已經支援中文了,所以相對的問題少了很多。如果是在python2.x的版本中,請在要執行的xx.py檔案中頂行加上類似“
# -*- coding:utf-8 -*-
”,使用通用的utf-8
編碼,當然這只是初級的問題。 -
2.2 在實際開發中,比如爬蟲中使用requests、urllib.request等庫的時候,傳遞引數仍然會出現編碼解碼問題,這個時候 就是需要運用 encoding("utf-8") 和 decoding("utf-8")來編碼解碼。因為一般資料傳輸是bytes位元組檔案,而我們閱讀的時候是txt等格式檔案。
-
2.3 Linux系統中收發資料都是utf-8來編碼解碼;但是windows接收檔案是gbk編碼,傳送檔案是utf-8編碼,所以這個有是個坑。
-
2.4 Python編碼轉換
str -> bytes: encode編碼 bytes-> str: decode解碼
字串通過編碼成為位元組碼,位元組碼通過解碼成為字串.
>>> text = '我是文字'
>>> text
'我是文字'
>>> print(text)
我是文字
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文字'
>>> print(textDecode)
我是文字
其中decode()與encode()方法可以接受引數,其宣告分別為:
bytes.decode(encoding="utf-8", errors="strict") str.encode(encoding="utf-8", errors="strict") 其中的encoding是指在解碼編碼過程中使用的編碼(此處指“編碼方案”是名詞),errors是指錯誤的處理方案。
詳細的可以參照官方文件:
相關推薦
Python新手問題集錦|路徑問題 編碼問題(utf-8,gbk)等
經常看到群裡python新同學問一些簡單的問題,有些實在簡單老鳥不太願意答,因為一句說不清楚,但是對於新手來說也是一個困擾,所以正好閒暇片刻就來隨筆一下,時間倉促若有錯誤請指正。 一、路徑問題
Python中的編碼問題:ASCII碼 Unicoden編碼 UTF-8編碼
分享 動態 src 服務 .com 傳輸 ascii 函數計算 row 編碼 字符串是一種數據類型,但是,字符串比較特殊的是還有一個編碼問題。 因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時采用8個比特(bit)作為一個字節(
解決Qt中文亂碼以及漢字編碼的問題(UTF-8/GBK)
檔案從window上傳到Ubuntu後會顯示亂碼,原因是因為ubuntu環境設定預設是utf-8,Windows預設都是GBK. Windows環境下,Qt Creator,選單->工具->選項->文字編輯器->行為->檔案編碼: 預設編碼:Sy
深入理解Python的字元編碼utf-8 & unicode
參考:http://lukejin.iteye.com/blog/598303 一,通過例子理解字元編碼 在Python中有兩個和字元很相關的型別,一個是str型別,一個是unicode型別。 這兩種型別的物件都是sequece序列,其中str是位元組序列,而unicode
字元編碼及由來(UNICODE,UTF-8,GBK)
轉載自:https://blog.csdn.net/stilling2006 很久很久以前,有一群人,他們決定用8個可以開合的電晶體來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱為"位元組"。 再後來,他們又做了一些可以處理這些位元
maven 編碼 UTF-8 的不可對映字元 maven 編碼 GBK 的不可對映字元
當時我碰到這個問題的時候,按照網上的方法,配來配去還是不行,然後因為專案有兩個類是GBK編碼格式,其它的是UTF-8的,然後就突發奇想,把再建兩個類,把單獨這兩個類複製進去,把原來的刪了不就好了? 我就試了試,還真解決了,然後我也把網上的一些方法,找出來,說不定你就用得上了
常見的幾種字元編碼方式 ASCII Unicode UTF-8 GBK
在設計資料庫和網頁程式編寫的時候,經常涉及到一些編碼方式的問題,在此總結一下! 原文地址:http://blog.csdn.net/csywwx2008/article/details/17137097 常見的一些字元編碼方式無非有:Unicode、ASCII、GBK
ant編譯報錯“錯誤: 編碼UTF-8的不可映射字符”
ant 編譯報錯 error 根據報錯 的提示是編碼的問題,build.xml文件使用的是ANSI,文件中首行使用,網上查資料都是將encoding設置為GBK,設置之後是之前報錯的文件“AdvertiserAction.java”正常了,但是又會產生新的文件“PageUtil.java”報錯“錯
Linux(Ubuntu)使用日記------Mysql編碼(utf-8)的設置
img clu mysql5.7 inf sof 圖片 tex rac mysql配置文件 Mysq版本:5.7.21 操作系統:Linux(Ubuntu) 整個操作的基本思路如下(包括問題的解決思路,想要直接解決問題的可以先看最後的命令總結) 檢查mysql編碼
python中sys.setdefaultencoding('utf-8')的作用
error: ron load 而不是 ans Coding nbsp 我們 set 在python中,編碼解碼其實是不同編碼系統間的轉換,默認情況下,轉換目標是Unicode,即編碼unicode→str,解碼str→unicode,其中str指的是字節流,而str.de
windows設置新建文本文檔默認編碼UTF-8
編輯 windows 文本 修改 復制 管理 目的 roo shell 1. 打開記事本新建一個空白的文本文檔,不輸入任何文字,然後保存此文檔,在“另存為”對話框中將編碼由默認的 ANSI 修改為 Unicode 或 UTF-8,接著為文件取名,在此假設將新文檔命名為 UN
eclipse中如何設置在新建JSP/XML文件時就指定編碼UTF-8?
cli Language family ref 發現 encoding 需要 unicode tty eclipse新建jsp文件默認字符編碼為ISO-8859-1,很煩人,每次都需要更改 <%@ page language="java" contentType=
python輸出文件為utf-8格式的文件
py不同版本輸出json檔案,對檔案編碼的引數設定是不一樣的,在3版本中,若是要輸出帶中文的json文件,需要把輸出的編碼方式定義在open上,否則會引起輸出的json文件亂碼,具體的可以看例項: # coding= utf-8 import json outputFilePath =
關於字元編碼UTF-8
字元編碼 我們已經講過了,字串也是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。 因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11
ANT 編譯警告: 編碼 UTF-8 的不可對映字元解決方法
今天開始學ant自動構建工具。在編譯原始檔的時候碰到一個警告: 9: 警告:編碼 UTF8 的不可對映字元 [javac] System.out.println("ʹ��jar�ļ����"); [javac]
Python中出現SyntaxError:Non-UTF-8 code錯誤的解決方法
在七節數碼管繪製的程式中,遇到了如下報錯: Non-UTF-8 code starting with ‘\xc4’ in file main.py on line 47, but no encoding
python 字串輸出報錯 'utf-8' codec can't encode characters in position
一些字串無法被utf-8解碼,所以可以把無法轉化為utf-8格式的字元‘ignore’掉,再進行解碼。 str().encode('UTF-8', 'ignore').decode('UTF-8') 測試程式碼: text = ''' '\n
常見的字元編碼UTF-8、UTF-16、UTF-32
字符集 字符集為每個字元分配了一個唯一的編號,通過這個編號就能找到對應的字元。在程式設計過程中我們經常會使用字元,而使用字元的前提就是把字元放入記憶體中,毫無疑問,放入記憶體中的僅僅是字元的編號,而不是真正的字元實體。 如何才能將字元編號放入記憶體中呢? 對於
oracle資料庫字元編碼utf-8改為ZHS16GBK
首先檢視服務端字符集 select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET' NLS_CHARACTERSET WE8MSWIN1252 然後用sys使用者進行修改 >sqlplus >co
python 讀入csv 出現utf-8 錯誤
在解析csv檔案的時候出現報錯: 'utf-8' codec can't decode byte 0xff in position 0 這說明此csv是binary檔案,你應該將它轉換為utf-8就能被python讀取。 或者參考以下方式讀取(但是這樣