import sys
print(sys.path)

- 1.是python去查找包或模块
- 2.项目开始根目录,python内置的目录
- 3.虽然说python的安装目录下也可以存放我们写的模块,但是不建议(太多了,不大好找)
- 4.如果以后你发现模块导入不了了 ,可以使用下sys.path
- 5.返回的是一个数组
- 6.用的时候需要导入sys:import sys
- python的目录,主要放外部的库,或者第三方的模块
python学习交流Q群:903971231####
- 1.from..module ...import 方法、变量等
- from python_basic.class10_路径.pac01.module_012 import a
print(a)
print(sys.path)
- 2.from pac ... import module
- from python_basic.class10_路径.pac01 import module_012
print(module_012.a)
print(sys.path)

1.获取绝对路径os.path.abspath(file)
- import os
# 获取绝对路径
# 固定的写法
# file 表示运行的文件的名称
abs_path=os.path.abspath(file)
print(abs_path)
import os
# 当前文件的绝对路径
abs_path=os.path.abspath(__file__)
print(abs_path)
- 1.os.path.dirname(file)
- 不建议用
# 获取文件的目录
dir_name = os.path.dirname(__file__)
print(dir_name)

- 建议用
- dir_name1 =os.path.dirname(file)
dir_name =os.path.dirname(abs_path)
abs_path =os.path.abspath(__file__)
dir_name =os.path.dirname(abs_path)
print(dir_name)
例子:假设若需要打开另外一个包pac01下的demo.txt
1.思路
1.获取当前文件的绝对路径
2.获取当前文件的目录路径
3.当前文件的目录路径和pac01进行拼接
1.推荐方法
txt_file_path=os.path.join(dir_name,“pac01”,“demo.txt”)
PS一般来说,是通过某个文件去获取项目的跟路径
abs_path = os.path.abspath(__file__)
dir_name =os.path.dirname(abs_path)
txt_file_path=os.path.join(dir_name,"pac01","demo006.txt")
with open(txt_file_path,encoding="utf-8") as f:
print(f.readlines())

- 2.其他方法:不建议用
python学习交流Q群:903971231###
- # print(dir_name+'/pac01/demo.txt')
# print(dir_name+r'\pac01\demo.txt')
- 这种写法不建议,因为不同的系统,windows一般是\,mac是/,改来改去麻烦
- 4.打开文件并读取
- with open(txt_file_path,encoding="utf8") as f:
print(f.read())
PS:获取文件路径时,路径或文件不一定要真实存在,了解这即可
1.os.getcwd():获取当前的工作目录
print(os.getcwd())

2.os.chdir():切换工作目录
3.os.mkdir(“test_dir”)
创建工作目录
os.mkdir(“test_dir”)
4.os.rmdir()
删除工作目录
os.rmdir(“test_dir”)
5.listdir()

print(os.listdir())

6.os.path.isfile()
7.os.path.isdir
print(os.path.isfile(__file__))
print(os.path.isdir(__file__))

1.程序如果遇到异常,不会再执行
2.写代码的人不能让程序遇到异常就终止运行
1.捕获他catch
2.抛出他raise
1.异常的捕获
try:
你要执行的可能发生异常的代码
except:
程序发生异常后,你希望程序做的事情
- 1.程序先执行try 当中的代码
- 2.但是一旦try当中某个代码报错,会执行跳到except,try剩下的代码不会执行
- 3.例子:
- 1.except捕获了
try:
print("正在运行代码")
a = 1 / 0
print(f"计算结果:{a}")
except:
print("1不能除0,你需要改除数")
print("其他的程序")
输出的结果是:


“”"
- 2.异常类型的捕获
- 1.没有捕获该类型的情况
- # try:
try:
print("正在运行代码")
a=1/0
print(f"计算结果:{a}")
except IndexError:
print("1不能除0,你需要改除数")
print("其他的程序")
# 只会打印 正在运行代码,因为报错了,无法捕获ZeroDivisionError异常,

- 2.捕获到该类型的错误
try:
print("正在运行代码")
a=1/0
print(f"计算结果:{a}")
except ZeroDivisionError:
print("1不能除0,你需要改除数")
print("其他的程序")
输出的结果是:

3.打印异常信息Exception(或某种类型的报错) as e
- 1.单个异常的
- # 打印异常信息,一般用此方法
try:
print("正在运行代码")
a=1/0
print(f"计算结果:{a}")
except ZeroDivisionError as e:
print(e)
print("其他的程序")
输出的结果是:


- 2.多个异常的
try:
lst = ['yz', 'addd']
lst[3]
a=1/0
except ZeroDivisionError as err:
print(err)
print("hello word")
# IndexError: list index out of range
- # 捕获多个时
try:
{"name":"zhangsan","age":18}['name1']
lst = ['yz', 'addd']
lst[3]
a=1/0
except (ZeroDivisionError,IndexError,KeyError) as err:
print(err)
print("hello word")
打印的结果:
try:
a = 1 / 0
{"name":"zhangsan","age":18}['name1']
lst = ['yz', 'addd']
lst[3]
except ZeroDivisionError as err:
print(err)
print("ZeroDivisionError")
# 抓到这个异常
# division by zero
# ZeroDivisionError
except IndexError:
print("IndexError")
# 抓到这个异常 IndexError
except KeyError:
print("KeyError")
# 抓到这个异常 KeyError
打印的结果:
- 具体用哪个,根据实际情况来
2.try…finally
1.finally后的代码无论正常与否,都会执行
try:
1/1
print("正常执行的代码")
except ZeroDivisionError as e:
print("不能除以0")
finally:
print("无论正常与否,都会执行的代码")
打印的结果:


- 2.异常的
try:
1/0
print("正常执行的代码")
except ZeroDivisionError as e:
print("不能除以0")
finally:
print("无论正常与否,都会执行的代码")
打印的结果:
- 2.常见应用在打开文件后,**关闭文件**
- # 假设demo.py被打开了
import io
try:
f=open("demo.py",'a')
f.read()
except io.UnsupportedOperation as e:
print("文件读取失败")
print(e)
finally:
f.close()
"""
打印结果:
文件读取失败
not readable
“”"
2.异常的抛出
例子1:
def adult_add(a,b):
"""两个大于等于18的数相加;小于18的不能相加"""
if (a<18) or (b<18):
raise ValueError("参数必须大于或等于18")
c=a+b
return c
adult_add(18,19)
adult_add(3,4) #ValueError: 参数必须大于或等于18
print("函数执行完毕")
"""

打印结果:
File ".../demo03_raise.py", line 13, in adult_add
raise ValueError("参数必须大于或等于18")
ValueError: 参数必须大于或等于18
"""
- try:
adult_add(3, 4) # ValueError: 参数必须大于或等于18
except:
print("函数执行完毕")
# 打印结果:函数执行完毕
- 1.assert后面跟一个条件语句,条件不成立就触发条件异常
- 2.语法:assert 条件表达式
### 3.例子
- height=int(input("请输入身高:"))
assert height>180
# 断言为真时:请输入身高:181
"""
断言为假时:请输入身高:180
Traceback (most recent call last):
File ".../demo04_assert.py", line 9, in
assert height>180
AssertionError
"""
今天这篇文章到这里就结束了,喜欢的小伙伴记得点赞收藏。关于这篇文章有不懂的地方记得随时提问
哟!!!下次见~~~
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht