我尝试在bash中使用读/写文件描述符,以便我可以删除文件描述符后面引用的文件,如下所示:
F=$(mktemp)
exec 3<> "$F"
rm -f "$F"
echo "Hello world" >&3
cat <&3
Run Code Online (Sandbox Code Playgroud)
但该cat命令没有输出.如果我使用单独的文件描述符进行读写,我可以实现我想要的:
F=$(mktemp)
exec 3> "$F"
exec 4< "$F"
rm -f "$F"
echo "Hello world" >&3
cat <&4
Run Code Online (Sandbox Code Playgroud)
打印Hello world.
我怀疑当你从写入切换到读取时,bash不会自动寻找文件描述符的开头,以下bash和python代码的组合证实了这一点:
fdrw.sh
exec 3<> tmp
rm tmp
echo "Hello world" >&3
exec python fdrw.py
Run Code Online (Sandbox Code Playgroud)
fdrw.py
import os
f = os.fdopen(3)
print f.tell()
print f.read()
Run Code Online (Sandbox Code Playgroud)
这使:
$ bash fdrw.sh
12
$ # This is the prompt reappearing
Run Code Online (Sandbox Code Playgroud)
有没有办法实现我想要的只是使用bash?
我是一名教师.我的成绩簿是一个.xlsm文件,位于我的Google云端硬盘文件夹中.我正在构建一个Web应用程序,也在我的Drive文件夹中,显示根据座位表排列的学生姓名.我想在我的Android手机上运行该应用程序,然后单击学生的姓名以在成绩簿中添加参与标记.该应用还应显示学生现有的参与分数(来自成绩簿).完成这样的事情的最佳方法是什么?
*我最初尝试使用另一个.xlsm文件执行此操作但是,当我意识到宏不能在Android版本的Excel上运行时,我切换到基于HTML的应用程序.这是正确的决定吗?
这是一个示例.xlsm文件.在这种情况下,应用程序将检查单元格A2以确保它是正确的学生,然后读取和写入单元格B2.
我们正在写一个客户端和服务器(我认为是)非常简单的网络通信.多个客户端连接到服务器,然后服务器将数据发送回所有其他客户端.
服务器只是位于阻塞select循环中等待流量,当它到来时,将数据发送到其他客户端.这似乎工作得很好.
问题是客户.在阅读时,它有时会想要写一次.
但是,我发现如果我使用:
rv = select(fdmax + 1, &master_list, NULL, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)
我的代码将阻塞,直到有新数据要读取.但有时(异步,来自另一个线程)我将在网络通信线程上写入新数据.所以,我希望我的select定期唤醒,让我检查是否有要写的数据,如:
if (select(....) != -1)
{
if (FD_SET(sockfd, &master_list))
// handle data or disconnect
else
// look for data to write and write() / send() those.
}
Run Code Online (Sandbox Code Playgroud)
我尝试将选择设置为轮询模式(或荒谬的短暂超时):
// master list contains the sockfd from the getaddrinfo/socket/connect seq
struct timeval t;
memset(&t, 0, sizeof t);
rv = select(fdmax + 1, &master_list, NULL, NULL, &t);
Run Code Online (Sandbox Code Playgroud)
但是发现那时客户端永远不会得到任何传入的数据.
我也尝试将socket fd设置为非阻塞,如:
fcntl(sockfd, F_SETFL, O_NONBLOCK);
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题:
select()没有struct …我在阅读/写入/保存Registry中的值时需要一些指导.我不熟悉在注册表中保存内容的概念
我有一个Winform,我必须读取/写入App.config文件并使用winform更改用户名和密码.在我的winform中我有2个文本框,当我输入值并点击提交时,它会更改app.config中的值我以某种方式做到了,没有问题.
现在我需要将我在Textboxes中输入的值发送到注册表并保存它们,我也应该能够读取它们.
我有多害羞吗?
我正在开发一个Android应用程序,其中需要提供读写外部存储的权限.我的要求是从图库中选择一张图片并在我的应用中使用它.除了棉花糖设备外,一切正常.我想为Marshmallow提供许可.谁能帮我这个?
android read-write android-permissions android-6.0-marshmallow
因为我需要在我的应用程序启动时读取文件并在使用它时有时写入,我试图通过以下方式达到它:
NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];
NSLog(@"%@",dataFile);
Run Code Online (Sandbox Code Playgroud)
而应该在我的项目文件夹中的文件是在模拟器文件夹中:
2012-06-13 17:36:56.398 MyFileApp [610:15203]/Users/Rob/Library/Application Support/iPhone Simulator/5.1/Applications/1FFD4436-DCCA-4280-9E47-F6474BEE0183/MyFileApp.app/myFile.txt
因此,如果我想使用模拟器和真实设备进行读/写,我该怎么办?
谢谢你的建议
在这里查看我的问题后,我发现它是由一个更简单的问题引起的。
当我写入"\n"文件时,我希望"\n"从文件中读入。在 Windows 中并非总是如此。
In [1]: with open("out", "w") as file:
...: file.write("\n")
...:
In [2]: with open("out", "r") as file:
...: s = file.read()
...:
In [3]: s # I expect "\n" and I get it
Out[3]: '\n'
In [4]: with open("out", "rb") as file:
...: b = file.read()
...:
In [5]: b # I expect b"\n"... Uh-oh
Out[5]: b'\r\n'
In [6]: with open("out", "wb") as file:
...: file.write(b"\n")
...:
In [7]: with …Run Code Online (Sandbox Code Playgroud) 如果我正在编写一个Perl脚本,用STDOUT的副本覆盖STDERR,但我从不恢复文件句柄,那么在脚本执行结束时会发生什么?我找不到任何警告实际发生或不发生的事情.
我可能被误导了,但感谢你的耐心等待.
我有nexus s,nexus 4和6 mifare nfc标签,并希望使用nfc reader/writer acr122u设备制作桌面应用程序(我尚未购买).
但除了android sdk之外,是否还需要一些其他SDK来通过eclipse与java制作桌面应用程序?或者我可以直接购买和使用acr122u设备(没有sdk)并通过eclipse制作应用程序?
如果需要SDK,是否有任何链接可以免费下载或者我必须从供应商处购买?
还有一件事,nexus S和ACR122U是否支持felica nfc卡?
我有mifare经典的nfc卡,它与它们配合良好.
我有一个大约 100 万个地址的列表,以及一个查找它们的纬度和经度的函数。由于某些记录格式不正确(或出于任何原因),有时该函数无法返回某些地址的纬度和经度。这将导致 for 循环中断。因此,对于成功检索到纬度和经度的每个地址,我想将其写入输出 CSV 文件。或者,也许不是逐行写入,以小块大小写入也可以。为此,我df.to_csv在“追加”模式 ( mode='a') 中使用,如下所示:
for i in range(len(df)):
place = df['ADDRESS'][i]
try:
lat, lon, res = gmaps_geoencoder(place)
except:
pass
df['Lat'][i] = lat
df['Lon'][i] = lon
df['Result'][i] = res
df.to_csv(output_csv_file,
index=False,
header=False,
mode='a', #append data to csv file
chunksize=chunksize) #size of data to append for each loop
Run Code Online (Sandbox Code Playgroud)
但问题在于,它正在为每个附加打印整个数据帧。因此,对于n行,它将写入整个数据帧n^2时间。如何解决这个问题?
read-write ×10
android ×3
bash ×1
blocking ×1
c ×1
c# ×1
excel ×1
file-io ×1
filehandler ×1
html5 ×1
ios ×1
javascript ×1
linux ×1
nfc ×1
objective-c ×1
pandas ×1
perl ×1
python ×1
python-3.x ×1
registry ×1
select ×1
sockets ×1
stderr ×1
stdout ×1
unix ×1
windows ×1
winforms ×1
writetofile ×1