小编Sil*_*ost的帖子

在Python中获取目录的基本名称的优雅方法?

我有几个脚本将目录名作为输入,我的程序在这些目录中创建文件.有时我想获取给程序的目录的基本名称,并使用它在目录中创建各种文件.例如,

# directory name given by user via command-line
output_dir = "..." # obtained by OptParser, for example
my_filename = output_dir + '/' + os.path.basename(output_dir) + '.my_program_output'
# write stuff to my_filename
Run Code Online (Sandbox Code Playgroud)

问题是如果用户给出带有斜杠的目录名,那么os.path.basename将返回空字符串,这不是我想要的.在python中处理这些斜杠/尾部斜杠问题的最优雅方法是什么?我知道我可以手动检查output_dir末尾的斜杠并删除它,如果它在那里,但似乎应该有更好的方法.在那儿?

此外,手动添加"/"字符是否可以?例如output_dir +'/'os.path.basename()还是有更通用的方法来构建路径?

谢谢.

python filesystems file-io directory-structure

12
推荐指数
2
解决办法
8084
查看次数

在Python中测试 - 如何在使用unittest的测试中使用assertRaises?

我试图使用unittest在Python中进行一个简单的测试,看看如果一个类在构造函数中获得不合适的输入时是否抛出异常.这个类看起来像这样:

class SummaryFormula:
    def __init__( self, summaryFormula):
        self.atoms = {}
        for atom in re.finditer( "([A-Z][a-z]{0,2})(\d*)", summaryFormula):
            symbol = atom.group(1)
            count = atom.group(2)

            if pocet != "":
                self.atoms[ symbol] = int(count)
            else:
                self.atoms[ symbol] = 1
Run Code Online (Sandbox Code Playgroud)

我的测试如下:

    class ConstructorTestCase(unittest.TestCase):
      def testEmptyString(self):
        self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")

    if __name__ == '__main__':
      unittest.main()
Run Code Online (Sandbox Code Playgroud)

我想要的只是测试失败,这意味着不处理构造函数的不合适输入的异常.

相反,我得到一个错误:__init__() takes exactly 2 arguments (1 given).

我错过了什么?我应该指定的第二个参数是什么?

另外,我应该使用什么类型的错误来处理异常,即我的regexp无法匹配的输入被传递给构造函数?

托马斯,谢谢你

python testing unit-testing exception-handling

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

使用解压缩的JAR依赖项构建WAR项目?

我有两个项目,my-libmy-webapp.第一个项目是依赖my-webapp.因此,当要求Maven2构建我的WAR时,my-libJAR将添加WEB-INF/lib/到Web应用程序的目录中.

但是,我希望将my-libJAR直接解压缩到WEB-INF/classes目录中,就像my-lib源代码包含在项目中一样my-webapp.

换句话说,而不是具有以下WAR内容:

my-webapp/
  ...
  WEB-INF/
    lib/
      my-lib-1.0.jar
      ... (others third libraries)
Run Code Online (Sandbox Code Playgroud)

我想拥有:

my-webapp/
  ...
  WEB-INF/
    classes/
      my-lib files
    lib/
      ... (others third libraries)
Run Code Online (Sandbox Code Playgroud)

有没有办法配置my-webapp或Maven2战争插件来实现这一目标?

build-process maven-2

11
推荐指数
2
解决办法
6284
查看次数

在python中创建新的List对象

我是python的初学者.我想在python中创建新的List对象.

我的代码:

recordList=[]

mappedDictionay={}

sectionGroupName= None

for record in recordCols:
    item = record
    print item

    if not sectionGroupName == record[0]:
        sectionGroupName = record[0]
        del recordList[0:] # Here I want to create new list object for recordList
        recordList.append(item)
        mappedDictionay[sectionGroupName] = recordList
    else:
        recordList.append(tempItem)
Run Code Online (Sandbox Code Playgroud)

python list

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

如何在Python中找到导入函数的位置?

我有一个带有函数的Python模块:

  == bar.py ==
  def foo(): pass
  == EOF ==
Run Code Online (Sandbox Code Playgroud)

然后我将它导入全局命名空间,如下所示:

from bar import *
Run Code Online (Sandbox Code Playgroud)

所以现在foo我可以使用该功能.如果我打印它:

print foo
Run Code Online (Sandbox Code Playgroud)

口译员高兴地告诉我:

 <function foo at 0xb7eef10c>
Run Code Online (Sandbox Code Playgroud)

有没有办法让我发现这个功能foo来自模块bar

python module

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

Git Svn获取更多修订

我在我们的svn存储库中使用git-svn.然而,回购是巨大的,所以我首先检查项目,如下:

git svn clone svn://svn.server.com/project -s -r 12000:HEAD
Run Code Online (Sandbox Code Playgroud)

所以,现在我只修改了当前版本的12000.我想查看一些更多的修订,但以下什么都不做:

git svn fetch -r 11000:HEAD
Run Code Online (Sandbox Code Playgroud)

有没有办法获取较旧的版本?

git git-svn

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

返回unicode字符串的前N个字符

我有一个unicode字符串,我需要返回前N个字符.我这样做:

result = unistring[:5]
Run Code Online (Sandbox Code Playgroud)

但当然是unicode字符串的长度!=字符长度.有任何想法吗?唯一的解决方案是使用re?

编辑:更多信息

unistring = "?????????" #Metallica written in Greek letters
result = unistring[:1]
Run Code Online (Sandbox Code Playgroud)

返回 - >?

我认为unicode字符串是两个字节(char),这就是为什么会发生这种情况.如果我做:

result = unistring[:2]
Run Code Online (Sandbox Code Playgroud)

我明白了

M

哪个是正确的,那么,我应该总是切片*2还是应该转换成什么?

python unicode python-2.x

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

class,dict,self,init,args?

class attrdict(dict):
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)
        self.__dict__ = self

a = attrdict(x=1, y=2)
print a.x, a.y

b = attrdict()
b.x, b.y  = 1, 2
print b.x, b.y
Run Code Online (Sandbox Code Playgroud)

有人可以用文字解释前四行吗?我读到了类和方法.但这里看起来很混乱.

python arguments class self

11
推荐指数
2
解决办法
8506
查看次数

是否有任何用于python的lib会让我得到一个单词的同义词?

是否有任何api/lib for python会让我得到一个单词的同义词?

例如,如果我有"房子"这个词,它将返回"建筑物,住所,大厦等......"

python nlp synonym

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

有没有办法让每个循环并行?

假设我在Python中有2个列表,我想并行遍历每个列表 - 例如对两个列表执行元素1的操作,对两个列表执行元素2的操作...我知道我可以通过使用指数:

for listIndex in range(len(list1)):
   doSomething(list1[listIndex])
   doSomething(list2[listIndex])
Run Code Online (Sandbox Code Playgroud)

但是有没有办法通过foreach循环更直观地做到这一点?有点像for list1Value in list1, list2Value in list2......?

我目前在Python中遇到过这种情况,但这是一个长期存在的问题,我很想知道你是否能用任何语言做到这一点.(我只是假设Python最有可能有一个方法来解决这个问题.)

python iteration parallel-processing foreach

11
推荐指数
2
解决办法
2814
查看次数