相关疑难解决方法(0)

"请求原谅不许可" - 解释

我不是要求对这种哲学提出个人的"宗教"观点,而是要更具技术性.

我理解这句话是几个试金石中的一个,看你的代码是否是"pythonic".但对我来说,pythonic意味着干净,简单和直观,没有加载异常处理程序以进行错误的编码.

所以,实际的例子.我定义了一个类:

class foo(object):
    bar = None

    def __init__(self):
        # a million lines of code
        self.bar = "Spike is my favorite vampire."
        # a million more lines of code
Run Code Online (Sandbox Code Playgroud)

现在,来自程序背景,在另一个函数中,我想这样做:

if foo.bar:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

如果我不耐烦并且没有做初始的foo = None,我会得到一个属性异常.所以,"请求宽恕不许可"表明我应该这样做吗?

try:
    if foo.bar:
        # do stuff
except:
    # this runs because my other code was sloppy?
Run Code Online (Sandbox Code Playgroud)

为什么我在try块中添加额外的逻辑会更好,这样我可以让我的类定义更加模糊?为什么不先定义所有内容,然后明确授予权限

(不要打扰我使用try/except块......我在任何地方都使用它们.我不认为用它们来捕捉我自己的错误是正确的,因为我不是一个彻底的程序员.)

或者......我是否完全误解了"请求原谅"的口头禅?

python

58
推荐指数
7
解决办法
2万
查看次数

ValueError:分割字符串时没有足够的值来解压(预期为 2,得到 1)

我尝试编写一个脚本,根据我对文件的命名,将文件从一个文件夹移动到一组文件夹。

例如,“Physics - a”将从“ts”文件夹移动到“/Physics/Assignments”,以便组织我的笔记。

它在后台持续运行,并在将某些内容放入“ts”文件夹时为这些文件分配新的位置。

我的脚本有效,但分配两个文件后,出现以下错误

第 14 行,add = name.split('-') ValueError: 没有足够的值来解压(预期为 2,实际为 1)。

我不明白为什么会发生这种情况,也不明白如何解决它。

import os
import time
from datetime import date

def clean():

    os.chdir('/Users/Chadd/Desktop/ts')

    i = 0
    while i < len(os.listdir()):
        i = 0
        
        name, ext = os.path.splitext(os.listdir()[i])
        code, add = name.split('-')
        folder = code.strip().upper()

        if add.strip() == 'a':
            add = 'Assignments'

        if add.strip() == 'p':
            add = 'Past Papers'

        if add.strip() == 'n':
            add = 'Notes'

        if add.strip() == 't':
            add = 'Tutorials'

        today …
Run Code Online (Sandbox Code Playgroud)

python string split while-loop iterable-unpacking

4
推荐指数
1
解决办法
2万
查看次数

ValueError: 需要 1 个以上的值才能解包,拆分一行

我在同一行有一个包含问题和答案的文件,我想将它们分开并将它们附加到自己的空列表中,但不断收到此错误:
builtins.ValueError: need more than 1 value to unpack

questions_list = []
answers_list = []

questions_file=open('qanda.txt','r')


for line in questions_file:
    line=line.strip()

    questions,answers =line.split(':')

    questions_list.append(questions)
    answers_list.append(answers)
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
2
解决办法
2万
查看次数

标签 统计

python ×3

iterable-unpacking ×1

split ×1

string ×1

while-loop ×1