python 代碼出問題
1.讀取桌面文件出錯
使用spyder在讀取桌面文件時,剛開始我的代碼是:
baseball = pd.read_csv('C:\Users\TuZhiqiang\Desktop\result.csv')
print(baseball)
一直報錯:
(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX e
後來發現:
在Python中 \ 是轉義符,\u表示其後是UNICODE編碼,因此\User在這裏會報錯,在字符串前面加個 r(rawstring 原生字符串),可以避免python與正則表達式語法的衝突!
修改後:
baseball = pd.read_csv(r'C:\Users\TuZhiqiang\Desktop\result.csv')
print(baseball)
結果正常!
2.測試tensorflow
在Anaconda Prompt中先啓動tensorflow環境,再進入python環境。
測試代碼如下:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
3.空格和tab混用
問題答案轉載自:https://www.cnblogs.com/hanhanzhu000/p/4091350.html
【問題】
一個python腳本,本來都運行好好的,然後寫了幾行代碼,而且也都確保每行都對齊了,但是運行的時候,卻出現語法錯誤:
IndentationError: unindent does not match any outer indentation level
【解決過程】
1.對於此錯誤,最常見的原因是,的確沒有對齊。但是我根據錯誤提示的行數,去代碼中看了下,沒啥問題啊。
都是用TAB鍵,對齊好了的,沒有不對齊的行數啊。
2.以爲是前面的註釋的內容影響後面的語句的語法了,所以把前面的註釋也刪除了。
結果還是此語法錯誤。
3.後來折騰了半天,突然想到了,把當前python腳本的所有字符都顯示出來看看有沒有啥特殊的字符。
當前用的文本編輯器Notepad++,好像有個設置,可以顯示所有的字符的。
找到了,在:
視圖-> 顯示符號 -> 顯示空格與製表符
然後就看出問題來了:
原來錯誤的行數是1580行,但是源碼的1580行的對齊用的是點點點的空格,是和前面的幾行的對齊所用的箭頭表示的TAB鍵,是不匹配的,即代碼的對齊,混用了TAB鍵和空格:
而新的Python語法,是不支持的代碼對齊中,混用TAB和空格的。所以出現上述錯誤提示了。
知道原因了,解決起來就簡單了:
去把對應的TAB,都改爲空格,統一一下對齊的風格,即可。
在Notepad++中,去:
設置->首選項:
語言->以空格取代(TAB鍵):
即可實現,對於以後每次的TAB輸入,都自動轉換爲4個空格。
【總結】
Python中遇到IndentationError,以後第一時間就要想到,是不是由於TAB鍵和空格混搭使用了。
4.Missing parentheses in call to ‘print’
原來是因爲Python2.X和Python3.X不兼容。
我安裝的是Python3.X,但是我試圖運行的卻是Python2.X 的代碼。
所以上面的語法在python3中是錯誤的。在python3中,你需要將print後面的語句加括號,正確的寫法:
print ("hello world")
5.升級pip的時候超時出錯
因爲服務器連接超時,使用一下代碼即可解決
python -m pip install --upgrade pip -i https://pypi.douban.com/simple
6.python scipy.signal 報錯沒有find_peaks
module 'scipy.signal' has no attribute 'find_peaks'
scipy的版本問題
服務器上是scipy版本是0.19.0,一直在報錯,更新版本之後才解決了該報錯。
更新代碼:
conda update scipy
7.Anaconda3 中 Spyder 無法打開/點擊沒有反應 應對方法
情況一:
在cmd輸入以下命令:
spyder --new-instance
情況二:
我發現我的spyder版本太低了。。我把它更新了一下就好了。。