我有一个209MB .txt文件,大约95,000行,每周一次自动推送到我的服务器,以更新我的网站上的一些内容.问题是我无法分配足够的内存来处理这么大的文件,因此我想将大文件分成较小的文件,每个文件有5,000行.
在文件被分成小块之前我根本不能使用file(),所以我一直在使用SplFileObject.但我无处可去.这是我想要实现的一些伪代码:
read the file contents
while there are still lines left to be read in the file
create a new file
write the next 5000 lines to this file
close this file
for each file created
run mysql update queries with the new content
delete all of the files that were created
Run Code Online (Sandbox Code Playgroud)
该文件采用csv格式.
编辑:以下是给出以下答案的逐行阅读文件的解决方案:
function getLine($number) {
global $handle, $index;
$offset = $index[$number];
fseek($handle, $offset);
return explode("|",fgets($handle));
}
$handle = @fopen("content.txt", "r");
while (false !== ($line = fgets($handle))) …Run Code Online (Sandbox Code Playgroud) 当我更新一个Employee时,我得到一个例外
"发生了引用完整性约束违规:定义引用约束的属性值在关系中的主体和依赖对象之间不一致."
我的代码收到一个Employee,附加到上下文并保存更改.
public void UpdateRAD_Tbl_OrderPatient(Employee emp)
{
try
{
this.ObjectContext.RAD_Tbl_OrderPatient.AttachAsModified(emp);
this.ObjectContext.SaveChanges();
this.ObjectContext.AcceptAllChanges();
}
catch(Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)

在此对象上更改外键时发生异常.
如何附加更改此外键的对象?
我刚刚从1.2切换到trunk(写这篇文章的r15175)来玩contrib.staticfiles,现在当使用本地devserver时,我的所有管理媒体都返回404.静态媒体(由新的contrib app管理)都按预期工作,但是我希望能够将admin与dev服务器一起使用,以便在dev代码更改时不必重新启动本地apache实例.
这是已知行为吗?我没有在IRC得到回复.
编辑:似乎与以下内容有关:管理媒体在开发模式下运行django trunk时消失,但似乎没有真正的答案.
我使用以下URL提供的代码尝试使用Android Camera API:
http://marakana.com/forums/android/examples/39.html
这提出了几个问题,我试图找到目前为止的答案是徒劳的.
1)我的应用程序需要处于纵向方向,但我所看到的所有代码示例(包括上面提到的URL)似乎都依赖于横向方向.事实上,无论我到目前为止尝试过什么,似乎景观都是不可避免的.我试过surfaceCreated(...)像这样强制参数:
Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
parameters.set("rotation", "90");
camera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
我试过做同样的事情surfaceChanged(...).当然,我也在清单中将我的方向设置为肖像如下:
android:screenOrientation="portrait"
Run Code Online (Sandbox Code Playgroud)
有没有人对我做错了什么以及如何解决它有任何建议?
2)我发布的另一个问题与释放相机资源有关.在上面引用的文章的代码中,在surfaceDestroyed(...)方法中调用以下内容:
camera.stopPreview();
camera = null;
Run Code Online (Sandbox Code Playgroud)
没有什么可以释放相机资源,因此在运行此应用程序后,任何使用相机的后续应用程序都将无法工作.我试图解决这个问题,我添加了一个释放资源的调用,如下所示:
camera.stopPreview();
camera.release();
camera = null;
Run Code Online (Sandbox Code Playgroud)
但问题是,当我关闭应用程序时,我在LogCat中遇到以下异常的"强制关闭":
FATAL EXCEPTION: main
java.lang.RuntimeException: Method called after release()
at android.hardware.Camera.setHasPreviewCallback(Native Method)
at android.hardware.Camera.access$600(Camera.java:58)
at android.hardware.Camera.$EventHandler.handleMessage(Camera.java:344)
at android.os.Handler.dispatchMessage(Handler.java.99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lanf.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么我不能在那里释放相机资源?
谢谢大家.这个相机的东西让我疯了.
PS我正在HTC Evo上测试所有这些.
我一直在阅读这里的旧帖子以及我在Google上找到的页面,我可以诚实地说这让我完全糊涂了.似乎有大约1000种使用C#.NET解析XML字符串的方法,我不知道使用哪种方法.似乎我发现的所有示例都依赖于特定的命名根节点,依此类推.
我拥有的是......
<whmcsapi version="4.1.2">
<action>getstaffonline</action>
<result>success</result>
<totalresults>1</totalresults>
<staffonline>
<staff>
<adminusername>Admin</adminusername>
<logintime>2010-03-03 18:29:12</logintime>
<ipaddress>127.0.0.1</ipaddress>
<lastvisit>2010-03-03 18:30:43</lastvisit>
</staff>
</staffonline>
</whmcsapi>
Run Code Online (Sandbox Code Playgroud)
我只需要获取每个工作人员的信息值(包含在标签中).任何人都可以告诉我这样做的最佳方式是什么,可能是一个小例子?
谢谢!
我想编写一个bash脚本来使用名为xmgrace的绘图工具自动绘制数据,但我希望能够选择绘制哪些列.
在我的数据文件中说我有3列,第1和第3列中有x和y数据.当数据以这种方式格式化时,如何用x绘制y?
我尝试xmgrace -bxy [1:3] data但是没有用,它说No block data read并将第二列视为y值.
我需要帮助定制我的情节.我希望画布看起来大致类似于MacOS Grapher的默认2D图形模板(见截图).

澄清 - 我需要
我真的很感谢你的帮助!
首先,我想问一下,XML节点的以下两个语句之间是否存在差异:
假设我有一个像这样的XML文件:
<claim_export_xml>
<claim_export_xml_row>
<claim_number>37423</claim_number>
<total_submitted_charges>0</total_submitted_charges>
<patient_control_no/>
<current_onset_date>2009-06-07 00:00:00</current_onset_date>
Run Code Online (Sandbox Code Playgroud)
我想检查"current_onset_date"节点是否存在,我使用了以下XSLT:
<xsl:for-each select="claim_export_xml_row ">
<xsl:if test="claim_number =$mother_claim_no and /current_onset_date ">
Run Code Online (Sandbox Code Playgroud)
for-each循环是我必须承受的一些逻辑,以便循环工作.但是在运行这个XSLT之后,我确实得到了错误的结果,上面的xml数据不会被我的XSLT抓取.但我不认为使用"current_onset_date =''"也是正确的,因为它正在测试"current_onset_date是否包含任何内容".
谁能告诉我我的错误在哪里,也帮助我在开始时列出我的问题,谢谢!