在Python中是否有一个内置的函数可以代替(或删除)文件名的扩展名(如果有的话)? 例: print replace_extension('/home/user/somefile.txt', '.jpg') 在我的例子中: /home/user/somefile.txt将成为/home/user/somefile.jpg 我不知道是否重要,但我需要这个我正在写的SCons模块。 (所以也许有一些SCons的具体function,我可以使用?) 我想要一些干净的东西。 做一个简单的stringreplacestring中的所有.txt显然是不干净的。 (如果我的文件名是somefile.txt.txt.txt这将失败)
Autotools,Cmake和Scons之间有什么区别?
我正在写一些类似C ++的交互式教程。 本教程将由两部分组成:一部分编译成一个库(我使用Scons来编译),另一部分(课程)随教程一起提供,由最终用户编译。 我目前正在寻找一个好的,简单的方法让人们build立这些经验教训。 基本上,第二部分是一个包含所有课程的目录,每个目录都在自己的目录中。 每个课程至less有一个lesson.cpp和一个main.cpp文件,可能还有其他的文件,这些文件的存在直到它出厂之后才会知道 – 最终用户将会创build这些文件。 它看起来像这样: all_lessons/ helloworld/ lesson.cpp main.cpp even_or_odd/ lesson.cpp main.cpp calculator/ lesson.cpp main.cpp user_created_add.cpp 每一个都需要按照几乎相同的规则进行编译,编译命令应该可以从一个课程目录( helloworld/等)运行。 看到这个项目的其余部分是用Scons构build的,这个部分也是有意义的。 但是,Scons在它运行的目录中searchSConstruct文件:在每个课程目录中放置一个SConstruct文件以及在all_lessons/目录中提供一般规则的all_lessons/是否可以接受? 这似乎违背了Scons预计项目组织的典型方式:这种方法的潜在缺陷是什么? 我可以把一个SConstruct文件,而不是SConscript之一,从而使它可能从任一目录(使用出口,以避免无限recursion,我猜测)build立? 另外,我可能在某个时候想用lesson.cppreplacelesson.py来生成必要的文件; Scons会允许我如何轻松地与build设者做这件事,还是有一个更方便的框架? 最后,我想结束以下(或与不同的构build系统等效): all_lessons/ SConstruct helloworld/ SConstruct lesson.cpp main.cpp even_or_odd/ SConstruct lesson.py main.cpp calculator/ SConstruct lesson.cpp main.cpp user_created_add.cpp 在all_lessons目录中运行scons all将需要: 运行even_or_odd/lesson.py生成even_or_odd/lesson.cpp 。 认识到user_created_add.cpp也需要编译。 为每个课程生成一个可执行文件。 在even_or_odd/运行scons ,或者在even_or_odd/运行scons even_or_odd/应该生成一个与上面相同的可执行文件(相同的编译标志)。 概要: Scons适合/有能力吗? […]