1. 问题:在Python工程中,创建了一个包,将包里__init__.py改成其它文件名后,在另一个包中,采用from引用时,引用不到;
解决:每个包下面,需要有__init__.py,主要逻辑可以是放在包下其它命名的文件中,但必须要有init__.py,为什么是这样还待学习和查阅资料。
2. 问题:在Python中采用标准库logging的config.configFile进行日志管理,在日志配置文件中写的对应root日志handler的日志级别是DEBUG,但是采用logging.info时,还是没有输出;
解决:因为采用的logger是root,但是没有指定root的日志级别,导致root默认采用的warning级别,比DEBUG级别高,导致没有输出,将root的日志级别设置为DEBUG后解决。
3. 问题:Python中如何判断某个文件是否存在;
解决:通过引入os模块,里面根据程序运行所在OS识别文件路径分隔符(如windows用\,Unix类用/),os模块还提供os.path.exists()来判断目录或文件是否存在,os.path.isdir()来判断是否是目录,os.path.isfile()来判断是否为文件。
4. 问题:Python中如何读取配置文件并获取里面的值?
解决:Python提供了ConfigParser模块,其根据配置文件的节和选项,就可以获取到对应配置值。只需要引入ConfigParser模块,通过其构造函数获得对应对象,对应对象read(相应配置文件)即得到了配置文件中的所有配置,通过ConfigParser的sections()获得所有节,根据ConfigParser的get(section, option)获得对应选项的配置值。
5. 问题:Python程序中,如何输出程序运行中的日志到文件,并且可以配置日志的格式?
解决:输出程序运行日志到文件,Python提供了logging模块,logging模块的模型是将日志记录过程中分为日志记录器logger、日志处理器(日志工具吧,loghandler)和格式器(formatter)等角色。当然,这些也都可以通过配置文件来指定具体值,要读取配置,显然也是要用到上面提到的ConfigParser模块,可以参照下面这个日志配置文件:
```ini
;同名应用程序日志输出相关控制信息
[loggers]
;声明一个名为administrator的日志记录器,logger
keys = root
[handlers]
;声明一个名为loghandler的日志处理器(用以表明日志保存到什么地方,以及保存多久)
keys = loghandler
[formatters]
;声明一个名为generic的formatter(用以配置日志的输出格式)
keys = generic
[logger_root]
;定义root这个logger所用的handler,root logger必须指定一个级别,否则,默认是WARNING级别
level=DEBUG
handlers = loghandler
[handler_loghandler]
;定义loghandler这个handler输出日志的方式、日志的切换时间等
class = handlers.TimedRotatingFileHandler
args = ('../OBS_logTransporter.log','midnight',1,10)
level = DEBUG
formatter = generic
[formatter_generic]
;定义generic这个formatter的日志格式,包括日志产生的时间、日志的级别、产生日志的文件名和行号等信息
;如下格式中,name只是logger的name,并不是对应打印日志处的文件名的name
;format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s
format = %(asctime)s %(levelname)-5.5s [%(filename)s:%(lineno)s] %(message)s
```
网上参考说明https://www.cnblogs.com/nancyzhu/p/8551506.html,也可以看Python Docs.
6. 问题:使用PyCharm编写Python程序,PyCharm提示“Shadows name from outer scope”
解决:根据网上别人的博客https://www.crifan.com/pycharm_python_code_notice_shadows_name_from_outer_scope/ ,该博客总结为“函数内部的变量,如果和函数被调用的外部的变量一样的话,就被PyCharm中叫做shadows name,这样的话,容易引发不容易觉察到的,由于函数内部和外部的变量名一致而引发的一些问题,比如:内部函数名引用时不小心写错了时,就会导致其实调用了外部变量名,从而导致逻辑错乱。所以解决办法是:确保函数内部和外部的变量名不要重复,这样就不会导致可能由此导致的错误了。”,个人经验是,如果用到的变量名可能与Python系统内置的变量或外部模块的变量相同时,可能也会提示这个,所以,确实最好不要重复与外部的变量名,另外,如果不确定引用的某个全局变量是否可能与其它模块的全局变量冲突,则建议,使用时,明确指定是哪个模块中的变量,例如,from datetime import datetime.
7.问题:Python中如何方便地管理远程服务器,及进行FTP类操作?
解决: Python有一个很好的开源库paramiko,网上有博客https://www.cnblogs.com/yangmv/p/5169924.html和https://www.cnblogs.com/pizitai/p/6398632.html也有介绍使用paramiko进行ftp类操作。实际上,paramiko是一个openssh封装Python库,其提供了SSHClient类对ssh的封装和SFTPClient类对ftp的封装,也可以直接在使用SSHClient类的构造函数获得sshclient实例基础上,再通过该实例的tansport(传输)或chnnel(通道)基础上再进行文件传输类操作。
8.问题:Python中引入paramikor编程时,PyCharm中提示python paramiko CryptographyDeprecationWarning
解决:【原因】paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。
【解决】删掉cryptography 2.5,安装2.4.2,就不会报错了。
pip uninstall cryptography==2.5
pip install cryptography==2.4.2
参考https://yq.aliyun.com/articles/690717
9.问题:Python采用开源库paramiko进行ssh到远程服务器上执行命令后,取到的返回结果stdout,stderr都为空,是什么原因?
解决:经过调测发现,原来是因为取到的stdout,stderr必须立即readline()或readlines()的结果返回,或者赋值给其它变量,否则,只要ssh关掉,则里面的内容都立马清空了。因为stdin,stdout,stderr都是chanelfile类型(虽然还没有明白这个CHANELFILE是什么类型的文件,但是从命名来看,跟CHANEL相关,既然CHANEL关掉了,CHANEL上的内容自然也就没有了)
10.问题:如何利用shell计算通过find查找出来的文件总大小?
解决:参照https://blog.51cto.com/204222/2113917,find ./ -name ".txt" -exec ls -lh {} \;| awk 'BEGIN {SUM7=0}{ SUM7+=$5} END {print SUM7}',我的改进后'find \\'/APPlog\\' -mtime -1 -type f -exec du -hsm {} \\;|awk \\'BEGIN {SUM=0}{ SUM+=$1} END {print SUM}\\''。主要是通过find命令与awk结合,注意, 放在Python里调度时,由于awk后的命令,从实测来看,是要用单引号,因此,Python语句中则得用双引号来括起该语句。
11.问题:python出现"No module named "XXX""的解决办法
解决:参照https://blog.csdn.net/ouening/article/details/53490847,找到自己的Python安装目录下lib目录里面的site-packages里,在里面建一个命名的.pth文件,然后在里面填写自己的工程的路径,则可以解决。自己实测,用2.7版本,自己建的工程中有多个模块,采用此方法解决了同样的问题。
12.问题:在Windows下通过pip打包PyCharm写的工程为Python可执行程序,在Windows上可以运行,无法在Linux上运行。
解决:Windows下通过pip打包的工程,可以看到,他带有winows的一些库,Windows上当然是可以运行的,但Linux上要运行,需要在Linux上通过pip打包。
13.问题:http://www.oicto.com/uninx-find-time-zip/,linux/uninx 查找指定目录指定时间范围内修改过的文件zip/tar打包,其中,通过
zip -r - `find . -mtime -1 -type f -print` > updatefiles.zip 发现占用的CPU使用率非常高�
Python_ProgramingExperience_to_Pythonic。记录编程过程中遇到的一些问题和解决资料.zip
需积分: 0 192 浏览量
更新于2024-01-03
收藏 4KB ZIP 举报
Python编程是一种广泛应用于数据分析、机器学习、Web开发和自动化任务的高级编程语言。"Pythonic"一词在Python社区中通常用来形容代码风格优雅、简洁且遵循Python编程哲学的代码。下面将深入探讨Python编程的一些关键知识点,以及可能遇到的问题和解决策略。
1. **基础语法**:Python的基础语法包括缩进(代替大括号表示代码块)、变量声明(动态类型)、数据结构(如列表、元组、字典和集合)以及控制流语句(如if-else、for和while循环)。了解这些是编写Python代码的基础。
2. **函数与模块**:Python支持函数式编程,可以创建自定义函数来封装代码。模块则允许我们将代码组织在不同的文件中,通过导入来重用代码。了解如何导入和使用标准库以及第三方库是Python编程的重要部分。
3. **异常处理**:Python使用try-except语句进行异常处理,这有助于程序在遇到错误时保持稳定。理解如何捕获和处理不同类型的异常是编写健壮代码的关键。
4. **面向对象编程**:Python支持面向对象编程,包括类的定义、对象的创建、继承、多态等概念。理解和运用这些原则可以提高代码的可维护性和复用性。
5. **迭代器与生成器**:Python的迭代器和生成器是处理大量数据时节省内存的有效工具。迭代器允许按需访问序列元素,而生成器通过yield语句在运行时生成值,避免一次性加载所有数据。
6. **上下文管理器**:使用with关键字可以创建上下文管理器,它们在代码块执行前后自动调用__enter__和__exit__方法,常用于资源的获取和释放,如文件操作。
7. **标准库**:Python的标准库包含许多实用模块,如os、sys、math、datetime等,熟悉并利用这些模块可以简化编程任务。
8. **第三方库**:Pandas用于数据处理,NumPy提供高性能数组操作,Matplotlib和Seaborn用于数据可视化,requests库处理HTTP请求,这些是Python编程中常用的第三方库。
9. **错误调试**:Python的pdb模块提供了强大的交互式调试工具,帮助开发者追踪代码运行过程,定位并解决问题。
10. **性能优化**:Python虽然易读易写,但在性能敏感的应用中可能需要优化。可以使用列表推导式、生成器表达式、Cython或Numba等工具提升代码执行速度。
在编程过程中,可能会遇到如语法错误、逻辑错误、性能瓶颈等问题,这时需要查阅文档、使用调试工具,甚至向社区提问寻求帮助。持续学习和实践是成为Pythonic程序员的关键。对于压缩包中的文件"48941918",可能是某个具体问题的实例或解决方案,但没有更多信息无法进一步分析。在实际编程中,遇到类似文件名的情况,我们通常会打开文件查看具体内容以获取更多信息。

zero2100
- 粉丝: 178
最新资源
- 什么是技术转移SaaS平台?它如何利用AI+数智应用解决技术转移中的难题?.docx
- 数字化技术转移机构如何利用AI+数智应用破局?.docx
- 数字化科技服务如何通过AI+数智应用赋能传统科技机构,解决产品同质化难题?.docx
- 有什么办法能通过AI+数智应用全方位优化技术转移机构服务,提高效率?.docx
- 在当前经济环境下,技术转移机构如何借助AI+数智应用把握机遇实现突破?.docx
- 怎样的AI+数智应用创新管理系统能真正提升科技管理效率与价值创造?.docx
- 中小科技服务机构预算有限,如何通过AI+数智应用低成本打造服务能力?.docx
- 中小科技服务机构预算有限,如何通过AI+数智应用低成本实现服务产品的升级?_1.docx
- 基于改进QSGS四参数随机生长法的三维多孔介质重构及性能评估
- 纯电动两档AT变速箱的Simulink模型设计及解析:包含换挡控制与执行模块的详尽注释与文档
- 宽幅CMOS可编程增益放大器研究.pdf
- 三菱PLC程序-基于PLC的3x3升降横移立体车库控制系统设计,附件同邮箱 升降横移
- 高校科技管理如何通过AI+数智应用提升服务质量与管理效率?.docx
- 技术转移服务如何借助AI+数智应用实现业务升级与客户增长?.docx
- 技术转移机构如何借助AI+数智应用解决市场竞争激烈、服务能力不足的问题?.docx
- 技术转移机构如何借助AI+数智应用让服务方式更便捷?.docx