小编Jon*_*mbs的帖子

如何在Eclipse/PyDev中抑制"未使用的变量"警告

如何在Eclipse/PyDev中抑制"未使用的变量"警告

当我使用返回元组的函数时,我通常只需要其中一个值,但仍想分配给多个变量.我希望能够暂时关闭此警告,以便我可以解决更严重的问题.然后,我可以在做更多的最终检查时将其重新打开.

如果您想知道为什么我会故意这样做,那只是为了可读性.假设一个函数返回一个元组元组,我的代码的几个部分可能与第三个值一起工作,如下所示:

label, content = myfunc()[2]
Run Code Online (Sandbox Code Playgroud)

有时,我可能只对"内容"作品感兴趣,但我发现这...

tmp, content = myfunc()[2]
Run Code Online (Sandbox Code Playgroud)

...比这更平行(因此更具可读性):

content = myfunc()[2][1]
Run Code Online (Sandbox Code Playgroud)

如果有一个更好的方法来做到这一点而不分配一次性未使用的变量,请随意提供它作为答案.

>>> myfunc()[2]
('lab', 'val')
>>> , v = myfunc()[2]
SyntaxError: invalid syntax
>>> tmp, v = myfunc()[2]
>>> 
Run Code Online (Sandbox Code Playgroud)

python eclipse pydev variable-assignment

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

简单的shell脚本,用于复制文件和文件夹,还可以执行命令

我之前没有编写任何Shell脚本,但我必须编写一个简单的shell脚本来执行以下操作;

我将所有必需的文件保存在一个文件夹中,并将其与此shell脚本捆绑为tar文件; 因此,当用户运行shell脚本时,需要将相应的文件复制到相应的目标.

副本的执行如下:

  1. 将plugin.so文件复制到/ usrlib/mozilla/plugins /

  2. 将.so库文件复制到/ usr/local/lib /

  3. 将一些头文件目录(文件夹)复制到/ usr/local/include /

最后,需要做ldconfig.

linux shell ubuntu

8
推荐指数
1
解决办法
6万
查看次数

为什么Python 3.2中的print()似乎默认为UTF-8?

我正在编写脚本来清理unicode文本文件(存储为UTF-8),我选择使用Python 3.x(3.2)而不是更受欢迎的2.x,因为3.x应该默认为UTF- 8.也许我做错了什么,但似乎打印声明至少仍然没有默认为UTF-8.如果我尝试打印一个包含特殊字符的字符串(下面的msg是一个字符串),我仍然会得到一个像这样的UnicodeEncodeError:

print(label, msg)
... in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0] 
UnicodeEncodeError: 'charmap' codec can't encode character '\u0968' in position
38: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

如果我首先使用encode()方法(它很好地默认为UTF-8),我可以避免错误:

print(label, msg.encode())
Run Code Online (Sandbox Code Playgroud)

这也适用于打印包含unicode字符串的对象或列表 - 这是我在调试时经常需要做的事情 - 因为str()似乎默认为UTF-8.但是我真的需要记住每次我想要打印(myobj)时使用print(str(myobj).encode())吗?如果是这样,我想我可以尝试用自己的函数包装它,但我对处理print()支持的所有参数排列没有信心.

此外,我的脚本从文件加载正则表达式并逐个应用它们.在应用encode()之前,我能够在控制台上打印一些相当清晰的东西:

msg = 'Applying regex {} of {}: {}'.format(i, len(regexes), regex._findstr)
print(msg)

Applying regex 5 of 15: ^\\ge[0-9]*\b([ ]+[0-9]+\.)?[ ]*
Run Code Online (Sandbox Code Playgroud)

但是,如果正则表达式包含文字unicode字符,则会崩溃,因此我首先将encode()应用于字符串.但是现在这些正则表达式很难在屏幕上阅读(我怀疑如果我尝试编写将这些正则表达式保存回磁盘的代码,我可能会遇到类似的问题):

msg = 'Applying regex {} of {}: {}'.format(i, len(regexes), regex._findstr)
print(msg.encode())

b'Applying regex 5 of 15: ^\\\\ge[0-9]*\\b([ ]+[0-9]+\\.)?[ ]*'
Run Code Online (Sandbox Code Playgroud)

我在Python中还不是很有经验,所以我可能会误解.任何解释或指向教程的链接(对于Python 3.x;我在网上看到的大部分内容都是2.x)将非常感激.

printing string unicode encode python-3.x

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

如何使C#引发解码异常?

我希望我的C#应用​​程序(具有GUI)可以帮助用户在“ unicode(utf-8)”和“旧版(cp1252)”之间进行选择。我想为用户提供两个独立的正确/错误读数,以了解是否可以以这两种格式“成功”(尽管不一定正确)读取文件,而不会丢失细节。

当我在C#中尝试以下操作时,它不起作用。也就是说,即使我在我知道包含非罗马字符的utf-8文本文件上调用它,它似乎总是返回true。

[编辑:实际上,我不应该以为这会失败。这可能是碰巧不正确的合理成功之一,因为大多数(所有?)字节流也是有效的cp1252。测试另一个方向确实会发现无效的utf-8,就像下面的Python代码一样。]

例如CanBeReadAs(“ nepali.txt”,Encoding.GetEncoding(1252))应该返回false,但返回true。

public static bool CanBeReadAs(string filePath, Encoding encoding)
    {
        // make it strict:
        encoding = Encoding.GetEncoding(encoding.CodePage, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
        using (var r = new StreamReader(filePath, encoding, false))
        {
            try
            {
                r.ReadToEnd();
            }
            catch (Exception e)
            {
                //swallow
                return false;
            }
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用“ string s = r.ReadToEnd();” 只是为了确保确实要对数据进行解码,但这似乎没有任何影响。

我究竟做错了什么?

注意:如果需要做一些特殊的事情来处理BOM,请也告诉我。如果那很简单,我倾向于忽略它们。(尽管其中一些文件混合使用了BTW编码,但我想实际上以BOM表开头的任何东西都是纯unicode。)

这是我创建的Python脚本,它使用相同的策略并且运行良好:

def bad_encoding(filename, enc='utf-8', max=9):
'''Return a list of up to max error strings for lines in the file not encoded in the specified …
Run Code Online (Sandbox Code Playgroud)

c# python encoding exception

1
推荐指数
1
解决办法
840
查看次数