我有一堆文件,由用户上传和标记.当另一个用户下载其中一个文件时,我想创建一个这样的文件名:
creator_tag1_tag2_name.ext
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?这是否必须在Django方面发生,还是可以通过jQuery完成?
我需要在给定目录中的不同类型的源文件中识别注释.(例如java,XML,JavaScript,bash).我决定使用Python(尝试学习Python)来做到这一点.我的问题是
1)我应该怎么知道python才能完成这项工作?(我有一个想法,正则表达式将是有用的,但有替代/其他模块将有用吗?我可以用来完成这项工作的库吗?)
2)Python是否是完成此类任务的不错选择?其他语言是否会使这更容易实现?
我有一个不同的audioformats列表,应该转换某个文件.我编写的转换函数现在应该转换文件并返回成功信息,新创建文件的路径或一些失败信息.
self.AUDIO_FORMATS = ({'format':'wav', 'samplerate':44100, 'bitdepth':16 },
{'format':'aac', 'samplerate':44100, 'bitdepth':16 },
{'format':'ogg', 'samplerate':44100, 'bitdepth':16 },
{'format':'mp3', 'samplerate':44100, 'bitdepth':16 } )
Run Code Online (Sandbox Code Playgroud)
由于其中一个转换失败的一个可能原因是缺少库,或者这样的库或我的实现中的一些错误或失败,我想测试每个转换到最后都有一个通过和失败的测试列表,失败者告诉我究竟哪个转换导致了麻烦.这是我试过的(有点简化):
def test_convert_to_formats(self):
for options in self.AUDIO_FORMATS:
created_file_path, errors = convert_audiofile(self.audiofile,options)
self.assertFalse( errors )
self.assertTrue( os.path.isfile(created_file_path),
Run Code Online (Sandbox Code Playgroud)
当然,这是第一次转换失败后立即中止测试.我可以为每个转换编写一个测试函数.这将导致必须为每个添加的格式编写一个新的测试,现在我只需要在我的AUDIO_FORMATS元组中添加一个新的字典.
完美的功能代码:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
Builder.load_string("""
#:kivy 1.8
<StartScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Start Server"
on_press:
root.start_server()
root.manager.current='stopscreen'
<StopScreen>:
BoxLayout:
Label:
text: "Press Button to"
Button:
text: "Stop Server"
on_press:
root.stop_server()
root.manager.current='startscreen'
""")
class StartScreen(Screen):
def start_server(self):
print('Server started.')
class StopScreen(Screen):
def stop_server(self):
print('Server stopped.')
sm = ScreenManager(transition=NoTransition())
sm.add_widget(StartScreen(name='startscreen'))
sm.add_widget(StopScreen(name='stopscreen'))
class MySpecialApp(App):
def build(self):
return sm
MySpecialApp().run()
Run Code Online (Sandbox Code Playgroud)
现在,根据Kivy Docs,应该可以将在此代码开头加载的字符串放入外部文件myspecial.kv一旦我这样做,我的屏幕就会留空,没有按钮,没有文本.为什么会这样,我怎样才能让它发挥作用?
我刚刚发现自己编写了这行代码,我不太喜欢这样做:
if ('upload' in request.POST) or ('delete' in request.POST):
Run Code Online (Sandbox Code Playgroud)
我已经考虑过列表理解,它看起来像这样:
if [value for value in ['upload','delete'] if value in request.POST]:
Run Code Online (Sandbox Code Playgroud)
哪个不是更好.我非常简单的问题是:这可以简化吗?或者这只是想要太聪明?