我已经在这里尝试了解决方案,它对我不起作用.我正在创建一个基于Heroku"入门"项目的Python项目.
在views.py,我希望能够访问该文件static/data/夹中的文件.但是,我为创建文件的正确URL所做的大部分尝试都失败了.唯一有效的方法是将文件的绝对路径放在我本地文件系统上,因为当我部署应用程序时,这显然无效.
以前尝试打开该文件包括:
from django.templatetags.static import static
url = static('data/foobar.csv')
os.path.isfile(url) # False
from django.conf import settings
url = os.path.join(settings.STATIC_URL, 'data/foobar.csv')
os.path.isfile(url) # False
Run Code Online (Sandbox Code Playgroud)
这是我的目录结构:
/appname
/app
/templates
views.py
/appname
/static
/js
/css
/data
settings.py
urls.py
Run Code Online (Sandbox Code Playgroud)
settings.py:
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app'
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'appname.urls'
WSGI_APPLICATION …Run Code Online (Sandbox Code Playgroud) 我试图找到一种简洁的方法来使用Scala中的Option [String]格式化String.我有一个标题字符串和一个副标题选项[字符串].这就是我所拥有的,但我觉得必须有更好的方法:
"Title%s".format(subtitle match
{case Some(s) => ": %s".format(s)
case None => "" })
Run Code Online (Sandbox Code Playgroud)
所以,如果我有一个副标题,我想要"标题:副标题",但如果是副标题None,我只想要"标题".
如果我有这样的案例类
case class Foo(bar: Option[String])
Run Code Online (Sandbox Code Playgroud)
为什么这样做
scala> val l = List(Foo(Some("b")), Foo(Some("a")), Foo(Some("c")))
l: List[Foo] = List(Foo(Some(b)), Foo(Some(a)), Foo(Some(c)))
scala> l.sortBy(_.bar)
res1: List[Foo] = List(Foo(Some(a)), Foo(Some(b)), Foo(Some(c)))
Run Code Online (Sandbox Code Playgroud)
但不是这个
scala> l.sortWith((x,y) => x.bar > y.bar)
<console>:11: error: value > is not a member of Option[String]
l.sortWith((x,y) => x.bar > y.bar)
Run Code Online (Sandbox Code Playgroud)
如果我要排序List的Option[String]降序排列,它只是简单的使用sortBy,然后reverse在列表中?
如果调用原始未过滤列表,如果filter返回空列表,否则返回过滤列表,我该如何返回呢?
scala> val l = List(1,2,3)
scala> l.filter(_ == 4)
res1: List[Int] = List() // would like this to be List(1,2,3)
scala> l.filter(_ == 3)
res: List[Int] = List(3) // want to maintain this behavior
Run Code Online (Sandbox Code Playgroud) 我的目标是分析视频文件(在这种情况下是mp4文件)以发现某些功能,并创建一个新的视频文件,其中包含视频和音频,这些视频和音频只是在这些功能发生之前和稍后.
我正在使用Python/OpenCV,可以正确识别视频中的功能,并可以创建我想要的新视频文件.
我也可以使用该subprocess模块并ffmpeg从原始文件中提取完整的音频,我可以使用该wave模块迭代音频帧.我还打算用它ffmpeg来组合生成的音频和视频文件.
我的问题是提取与新的精简视频文件中的帧匹配的音频.原始视频文件中的帧数(根据OpenCV)不等于返回的帧数Wave.getnframes(),因此我不确定如何只提取我需要的音频.
我有一系列像这样的案例类
case class Foo(..., bar: Option[A], ...)
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个Seq[(Foo, A)],在那里我提取Afrom bar和Seq唯一包含Foo的地方bar不是None.这是我现在的实现,但它调用的事实get使我认为有更好的方法来做到这一点:
val seqOfTuples = seqOfFoos.collect {
case foo if foo.bar.isDefined => (foo, foo.bar.get)
}
Run Code Online (Sandbox Code Playgroud) 如果我将案例类定义为:
case class Foo(bar: Option[String])
Run Code Online (Sandbox Code Playgroud)
和可变baz: Option[Foo],什么是最习惯的方法来提取bar从baz,而像一个空字符串提供默认值?
现在,我有
baz.fold("")(_.bar.getOrElse(""))
Run Code Online (Sandbox Code Playgroud)
但是在那里有两个空字符串让我觉得有更好的方法.