本文总结记录新手入门时,使用Python遇到的常见问题。

Q1:Python如何查看已经安装的库或模块、安装包?


  • IPython下:help() -> modules 或 help(‘modules’)
  • cmd/power shell下:pip list
  • 安装新的模块/库:pip install xxxx

iPython清屏命令,如何清空命令窗?


  • for Unix-like systems : !clear
  • for Windows : !CLS

转载于: https://www.cnblogs.com/yaos/p/7121892.html

Python字符串前加r和不加r的区别?


  • 以换行符 \n为例:

  • 若不加r,则会将\n当成转义字符,把\n当成一个整体,表示换行

  • 若加r,表示强制按默认字符写入,不转义,也即不会有换行的效果,末尾输入的是\和n

  • 实际代码如下:

    str1 = r'Hello World\n'
    str2 = 'Hello World\n'
    print(str1)
    print(str2)
    
  • 输出结果如下:

    Hello World\n
    Hello World
    

如何让Python画图的时候不显示图窗,同时保存图片?


  • 解决:在import包后加上use语句

    import matplotlib  
    matplotlib.use('Agg') 
    
  • 注意:一定要再import后面加上这句,其他地方添加无效。

  • 参考1:https://www.jianshu.com/p/fa01b8776e77

  • 参考2:https://blog.csdn.net/rumswell/article/details/7342479

Python问题:绘制动态图,反复画图,图会不断缩小解决


问题代码如上下:

def plot_curve(frl_res, idx_in, res_log, gif_list):
    # plot curves
    # plt.figure(i)
    # plt.clf()
    plt.cla()  # 清除上一幅图,如果不清,则图像不断叠加.
    plt.xlim(0, frl_res)
    plt.ylim(-150, 1)
    plt.title('Mdct Distribu')
    plt.xlabel('Index')
    plt.ylabel('Mdct Val/(dB)')
    plt.grid(linestyle='-.')
    plt.plot(idx_in, res_log[:], 'b', lw=1)
    plt.pause(0.1)

    # create gif
    plt.savefig('temp.png')
    gif_list.append(imageio.imread('temp.png'))
    # plt.close()
  • **解决:**直接使用plt.figure(i)处理,每张图画完保存temp.png,然后关闭。

如何让Python固定在一行不断输出?即Python同行输出


详细描述:Python如何实现不换行打印及同行不同print打印连接,核心:同行打印?

  • 类似C语言,末尾添加\r,而非\n
  • 示例:print('%d'%(number), end='\r')
number = 10
print('%d'%(number), end='\r')
number += 1
print('%d'%(number), end='\r')
number += 1
print('%d'%(number), end='\r')
  • 效果:同行瞬间显示10/11,最后显示12

具体分析知,主要有以下两种场景:

  • 场景1:类似C语言的printf("hello, world\r"),在一行内不断刷新输出
  • 场景2:希望将两次print打印的内容,在同行显示

场景1问题解决:

  • 不换行刷新,同样利用\r控制输出首位不变

  • 示例:

  data = range(100)
  for i in data:
    print('\r data={}'.format(i), end='')
  • 说明:
    • \r保证每次从行首开始输出
    • end = '',使输出字符串结尾符无追加换行符
    • 注意,如不声明,默认为:end='\n'
  • 效果:

场景2问题解决:- 将end结尾设为空,即end = ''

print ('abc ',end='')
print ('def ',end='')
print ('ghi ',end='')
  • 效果:
    • abc def ghi

相关资料:

Linux上如何运行Python脚本?


  • 首先确定是否安装了python,指令: python --version,查看Python版本

  • 如已安装,假设srcipt是你的脚本名字

  • 则在命令行输入:python script.py,即可调用

Python用f.readlines()读出来的行向量,一行文本只有换行符时,长度为多少?


  • 哪怕是只有个换行,没其他数据,但是换行符占一个数据,len(line)为1

Python最常用的字符串分割,split()函数默认分割时,空白符指哪些?


  • str.split(),默认分割空白符,包括空格、换行符\n

Python对字符串如何实现按单词来切分?


描述:比如检测到 str = "this wav is not ok",用wav来切分字符串?

  • 对字符串对象用split()即可,如str.split("wav"),即可进行切片
  • python的split默认是按空白符进行分割
  • 若split内输入的是字符串,如'abc'这类,则按如abc整体为分隔符进行分割
  • 若split内输入的是单个字符,则按字符进行分割

Q11:Python问题:文本写入后,打开却没内容


详细内容如下图:


  • 问题定位:
    • 单步跟进,确认str是写入了文本的,发现是因为调用single_file_test函数后,未手动关闭输出的文件流
    • 导致在Python运行完后,其实那个文件流还是被打开的状态
    • 从notepad进入后,读取的仍是创建文本时的文档,里面没有任何内容
  • 解决方法:
    • single_file_test函数后,添加语句:out_f_local.close(),保证让文件写入成功后正常关闭

Python里" "‘ ’区别


  • 如果要表示字符串,就没区别,如"字符串"和’字符串’,'Hello’和"Hello"对Python是一样的。
  • 主要区别在符号嵌套,但是用" "时,里面可以用',不能用"",比如"Let's go";相反,若用' ',不能直接用'在字符串中嵌套。

持续更新中


最近更新于:2022年1月4日