Python问题+技术集合

这篇博客主要讨论了Python编程中遇到的各种问题及其解决方案,包括输出格式问题、打包pip install包、Python2.7卸载问题、open函数参数错误、编码错误处理、RuntimeError的解决以及VScode代码运行问题。同时,博主分享了Python的技术知识点,如遍历文件夹、字符串操作、列表操作、XML处理、判断空文件夹并删除、深拷贝、变量类型判断、JSON操作和字典操作等,帮助读者深入理解和应用Python编程。
摘要由CSDN通过智能技术生成

1 所遇问题

1.1 输出格式有问题

背景:python2.7,IDE:VSCode
源码:
在这里插入图片描述
two.txt:
在这里插入图片描述

输出:
在这里插入图片描述
预期应该为商品,单价,数量。

修改最后一行的print
在这里插入图片描述

1.2 打包pip install 包

背景:内网需要安装python和一些包,无法连互联网,只能外网下载再u盘拷过去。

  1. 在外网机器Python的安装目录中新建一个文件夹,如packages:
    在这里插入图片描述

  2. 进入到packages文件夹下,shift按住,鼠标右键“在此处打开命令行”,输入pip
    list查看系统中安装了哪些python包,如下:
    在这里插入图片描述

  3. 把所有包名及版本号,重定向到requirements.txt中

pip freeze >requirements.txt
  1. 然后下载系统中已经安装的所有包到一个目录下,比如在packages的packages中,使用如下命令,此时packages下有两个文件:
pip download -r requirements.txt -d packages

在这里插入图片描述

  1. 内网安装。先复制刚才外网机器上的文件夹pacjages到内网机器对应的目录
    在这里插入图片描述
  2. 进入到D:\Python37\packages下,打开命令行,执行安装
pip install --no-index --find-links=packages -r requirements.txt 

如果失败,可以一个一个安装

pip install XXXX包名

1.3 python2.7 卸载失败问题

背景:使用.msi文件进行卸载,出现以下情况:

在这里插入图片描述
解决方法:
找到出问题的版本,个人当时出问题的版本是2.7.10。官网下载msi文件。
在这里插入图片描述
依次运行。

1.4 open函数传参数出错

背景:python2.7,open函数传递参数。
自定义函数,函数里面调用open函数

在这里插入图片描述
如果不在路径前面加r,就会报错。按理说应该是
open(file_path,mode)

后面写出函数,拼接的时候老出错。
解决办法:

路径使用/
‘C:/Users/76585/Desktop/compare/one.txt’

open函数可以正常使用open(path,mode)

1.5 Python编码错误的解决办法SyntaxError: Non-ASCII character ‘\xe5’ in file

原因:python的默认编码文件是用的ASCII码,而你的python文件中使用了中文等非英语字符

解决办法:

在Python源文件的最开始一行,加入一句:

#coding=UTF-8(等号换为”:“也可以)

或者

#-*- coding:UTF-8 -*-

1.6 RuntimeError: dictionary changed size during iteration

在字典遍历过程中修改字典元素,报错 RuntimeError: dictionary changed size during iteration

得知遍历时不能修改字典元素

for k in func_dict.keys():
    if func_dict[k] is np.nan:
        del func_dict[k]
        continue

解决办法:将遍历条件改为列表

for k in list(func_dict.keys()):
    if func_dict[k] is np.nan:
        del func_dict[k]
        continue

1.7 VScode code runner无法运行出正确的结果

背景:
内网电脑上,通过python程序对文件进行读写操作,但是没有出现相应的结果。单步调试可以出正确的结果。

分析:
通过print 输出可以发现问题。命令行运行py文件可以得到正确的结果,说明原因出在code runner上面。

解决办法:
1.首选项找到设置
在这里插入图片描述
2.输入code-runner,找到 Executor Map
在这里插入图片描述
3.选择这个,(将设置复制为id)
在这里插入图片描述
在这里插入图片描述

将复制的内容粘贴到里面

在这里插入图片描述
修改其中python字段的python值替换为vscode左下角的python解释器:
结果如下;

"python": "C:\\Python27\\python.exe -u" //注意转义符
//下面这个也可以

"python": "\"C:/Python27/python.exe\" -u"

在这里插入图片描述

2 技术知识点

2.1 遍历文件夹下的文件名

#方法1:使用os.listdir

import os
for filename in os.listdir(r'c:\windows'):
    print("文件夹名字",filename)

#方法2:使用glob模块,可以设置文件过滤

import glob
for filename in glob.glob(r'c:\windows\*.exe'):
    print("是.exe的文件名",filename)

#方法3:非递归

import os
for dirpath, dirnames, filenames in os.walk('D:'):
    print('文件路径', dirpath)
    print('文件夹名字',dirnames)
    for filename in filenames:
        print('文件名', filename)

2.2 字符串操作

2.2.1 字符串切割

注:使用前需要引入包(import re)
功能:split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列表
形式:

re.split(pattern, string[, maxsplit=0, flags=0])

pattern:匹配的字符串
string:需要切分的字符串
maxsplit:分隔次数,默认为0(即不限次数)
flags:标志位,用于控制正则表达式的匹配方式,比如:是否区分大小写,,,如下图所示

具体分析:

//传入某个文件的绝对路径(file_path),根据 '\'进行分割,将结果存入列表,再取出最后一个,就是文件名。
new_line= re.split(r'[/]',str(file_path))
file_name=new_line[-1]

2.2.2 替换字符串钟的匹配项

re.sub()

def sub(pattern, repl, string, count=0, flags=0):
    """Return the string obtained by replacing the leftmost
    non-overlapping occurrences of the pattern in string by the
    replacement repl.  repl can be either a string or a callable;
    if a string, backslash escapes in it are processed.  If it is
    a callable, it's passed the match object and must return
    a replacement 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值